16

我需要从普通的 ruby​​ 脚本中引用本地 gem,而不安装 gem。如何在红宝石中引用本地宝石?,我尝试使用以下设置创建一个 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?

4

2 回答 2

18

确保您的 gem 名称与 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
于 2012-11-25T10:20:42.660 回答
0

在不使用 Gemfile 的情况下,您可以通过bundle exec rake install在 gem 的根目录中运行来安装 gem 的本地版本,然后您可以像任何其他已安装的 gem 一样引用它。

于 2019-06-22T20:15:51.107 回答