Как привязать локальный жемчуг от рубина 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.