我需要从普通的ruby脚本引用本地gem,而不需要安装gem。在How to refer a local gem in ruby?的路径上,我尝试使用以下设置创建Gemfile:
%w(
custom_gem
another_custom_gem
).each do |dependency|
gem dependency, :path => File.expand_path("../../#{dependency}", __FILE__)
end
,脚本如下所示:
require 'custom_gem'
CustomGem::Do.something
当我执行以下操作时:
bundle exec ruby script.rb
我明白了:
script.rb:1:in `require': cannot load such file -- custom_gem (LoadError) from script.rb:1:in `<main>'
如果我遗漏 require 'custom_gem'
,我会得到:
script.rb:3:in `<main>': uninitialized constant CustomGem (NameError)
我甚至尝试过没有捆绑器,只是在脚本中编写gem ... :path =>̣ ...
,但没有结果。有没有其他方法可以从ruby脚本引用自定义gem,而无需在本地安装gem?
答案 0 :(得分:13)
确保您的宝石名称与Gemfile中的宝石名称相同(例如custom_gem
)
# Gemfile
source "https://rubygems.org"
gem "custom_gem", path: "/home/username/path/to/custom_gem"
不要忘记使用bundler
实际安装此gembundle install
之后,脚本应该可以由bundle exec ruby script.rb
# script.rb
require 'custom_gem'
CustomGem::Do.something
答案 1 :(得分:0)
无需使用Gemfile,您可以通过在宝石的根目录中运行bundle exec rake install
来安装宝石的本地版本,然后像其他已安装的宝石一样引用它。