2012-11-25 14 views
10

Ho bisogno di fare riferimento a una gemma locale da un semplice script rubino, senza installare la gemma. Sulle tracce di How to refer a local gem in ruby?, Ho cercato di creare un Gemfile con la seguente configurazione:Come fare riferimento a una gemma locale da uno script rubino?

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

e lo script si presenta così:

require 'custom_gem' 
CustomGem::Do.something 

Quando eseguo questo con:

bundle exec ruby script.rb 

Ottengo:

script.rb:1:in `require': cannot load such file -- custom_gem (LoadError) from script.rb:1:in `<main>' 

Se lascio il require 'custom_gem', ottengo:

script.rb:3:in `<main>': uninitialized constant CustomGem (NameError) 

ho anche provato, senza bundler, e solo la scrittura gem ... :path =>̣ ... nello script stesso, ma senza risultati. C'è un altro modo di fare riferimento a gemme personalizzate da script ruby, senza installare le gemme localmente?

risposta

10

Assicurati che il tuo nome gioiello come stessi in Gemfile (ad es custom_gem)

# Gemfile 

source "https://rubygems.org" 

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

Non dimenticare di installare in realtà questo gioiello utilizzando bundler

bundle install 

Dopo di che, lo script dovrebbe essere pronto per l'uso da bundle exec ruby script.rb

# script.rb 

require 'custom_gem' 
CustomGem::Do.something 
+0

Sì, ha avuto un errore di spelling, richiesto qualcosa di altro una gemma nella sceneggiatura. Grazie! – tohokami

Problemi correlati