如何从ruby脚本引用本地gem?

时间:2012-11-25 09:58:06

标签: ruby gem bundler

我需要从普通的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?

2 个答案:

答案 0 :(得分:13)

确保您的宝石名称与Gemfile中的宝石名称相同(例如custom_gem

# Gemfile

source "https://rubygems.org"

gem "custom_gem", path: "/home/username/path/to/custom_gem"

不要忘记使用bundler

实际安装此gem
bundle install

之后,脚本应该可以由bundle exec ruby script.rb

使用了
# script.rb

require 'custom_gem'
CustomGem::Do.something

答案 1 :(得分:0)

无需使用Gemfile,您可以通过在宝石的根目录中运行bundle exec rake install来安装宝石的本地版本,然后像其他已安装的宝石一样引用它。