Как привязать локальный жемчуг от рубина script?

Мне нужно связать локальный жемчуг с простым рубином script без установки драгоценного камня. На пути Как передать локальный камень в ruby?, я попытался создать Gemfile со следующей настройкой:

%w(
  custom_gem
  another_custom_gem
).each do |dependency|
  gem dependency, :path => File.expand_path("../../#{dependency}", __FILE__)
end

и script выглядит следующим образом:

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 =>̣ ... в самом script, но без результатов. Есть ли другой способ ссылки на пользовательские драгоценные камни из рубиновых скриптов, не устанавливая камни локально?

Ответ 1

Убедитесь, что имя вашего драгоценного камня совпадает с именем Gemfile (например, custom_gem)

# Gemfile

source "https://rubygems.org"

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

Не забудьте на самом деле установить этот камень с помощью bundler

bundle install

После этого script должен быть готов к использованию bundle exec ruby script.rb

# script.rb

require 'custom_gem'
CustomGem::Do.something

Ответ 2

Не используя Gemfile, вы можете установить локальную версию gem, запустив bundle exec rake install в корневом каталоге gem, а затем вы можете ссылаться на него, как на любой другой установленный gem.