我有一个小的
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.