ruby – 在脚本中安装宝石后,如何加载宝石?

我有一个小的 Ruby脚本,用于自动化本地机器上开发环境的准备工作.因为我无法确定所有机器上都存在rubyzip2库,所以在需要的时候我会安装脚本.

目前,我的脚本正在做如下操作:

begin
  require 'zip/zip'
rescue LoadError
  system("gem install rubyzip2")
end

一旦安装了gem,脚本将继续执行;然而,gem尚未加载,因此所有需要rubyzip2的代码都会停止执行.

如何将gem加载到内存中,以便脚本可以在安装后继续运行?

解决方法

bundler版本高于1.10(更新只是运行gem安装捆绑器),您可以使用其新的“内联”功能,如 here所述.
require 'bundler/inline'

gemfile(true) do
  source 'https://rubygems.org'
  gem 'catpix'
end

puts Catpix::VERSION

gemfile方法的第一个参数是是否应该安装尚未安装在用户系统上的gem.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...