2013-04-28 7 views
5

私は最近、いくつかのRailsアプリケーションでいくつかの機能を利用してエンジンに取り込むことにしました。私は今、エンジンを完成させて、完成した宝石を私のアプリケーションの1つにインストールしようとしています。カスタムGem in/vendor/gemsがロードされない

この特定の宝石は私が公開したいものではありませんので、宝石をgem build my_gem.gemspecでパッケージ化し、パッケージ宝石を私のアプリケーションのvendor/gemsフォルダに入れてください。次に、私はgem 'my_gem', '0.0.1', :path => 'vendor/gems'をgemfileに追加し、bundle installを実行しました。残念ながら、しかし

、Railsは宝石をロードしていないようですし、私は手動でそれを必要とするように見えることはできません。

$ bundle exec rails console --sandbox 
Loading development environment in sandbox (Rails 3.2.11) 
Any modifications you make will be rolled back on exit 
irb(main):001:0> MyGem 
NameError: uninitialized constant MyGem 
     from (irb):1 
     from c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/railties-3.2.11/lib/rails/commands/console.rb:47:in `start' 
     from c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/railties-3.2.11/lib/rails/commands/console.rb:8:in `start' 
     from c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/railties-3.2.11/lib/rails/commands.rb:41:in `<top (required)>' 
     from script/rails:6:in `require' 
     from script/rails:6:in `<main>' 
irb(main):002:0> require 'my_gem' 
LoadError: cannot load such file -- my_gem 
     from c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:251:in `require' 
     from c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:251:in `block in require' 
     from c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:236:in `load_dependency' 
     from c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:251:in `require' 
     from (irb):2 
     from c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/railties-3.2.11/lib/rails/commands/console.rb:47:in `start' 
     from c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/railties-3.2.11/lib/rails/commands/console.rb:8:in `start' 
     from c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/railties-3.2.11/lib/rails/commands.rb:41:in `<top (required)>' 
     from script/rails:6:in `require' 
     from script/rails:6:in `<main>' 

私が何か間違ったことをやっていますか?これをどうやって解決するのですか?


編集:ここに私の宝石の環境情報です。

$ gem env 
RubyGems Environment: 
    - RUBYGEMS VERSION: 1.8.16 
    - RUBY VERSION: 1.9.3 (2012-02-16 patchlevel 125) [i386-mingw32] 
    - INSTALLATION DIRECTORY: c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1 
    - RUBY EXECUTABLE: c:/RailsInstaller/Ruby1.9.3/bin/ruby.exe 
    - EXECUTABLE DIRECTORY: c:/RailsInstaller/Ruby1.9.3/bin 
    - RUBYGEMS PLATFORMS: 
    - ruby 
    - x86-mingw32 
    - GEM PATHS: 
    - c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1 
    - c:/Users/Ajedi32/.gem/ruby/1.9.1 
    - GEM CONFIGURATION: 
    - :update_sources => true 
    - :verbose => true 
    - :benchmark => false 
    - :backtrace => false 
    - :bulk_threshold => 1000 
    - REMOTE SOURCES: 
    - http://rubygems.org/ 

答えて

4

タイプgem envルビーが宝石を探している場所を確認します。

GEM_PATH環境変数に、あなたの宝石を入れたディレクトリを追加したいとします。例えば:また

export GEM_PATH="./vendor/gems:$GEM_PATH" 

を参照してください:あなたはGemfileを使用している場合http://docs.rubygems.org/read/chapter/12

、あなたもこれを行うことができます。

gem 'my-gem', '0.0.1', :path => 'vendor/gems/my-gem' 

(あなたがあなたの宝石のディレクトリの名前を追加する必要がありますパス)

+0

"gem directory"は、パ​​ッケージ化されていないgemを使用していることを示しています。それが私のやり方なの?現在の状況(私はパッケージ化された宝石を使用しています)のため、 ':path => 'vendor/gems/my_gem''はパス' C:/ Users/Ajedi32/my_app/vendor/gems/my_gem '存在しません。' – Ajedi32

+0

そのディレクトリに 'my-gem.gemspec'ファイルが必要です。また、Gitのバージョン管理の下にそのディレクトリを置いて、ディレクトリをチェックアウトできるURLを指すようにすることもできます。 – Tilo

+0

ああ、バンドルバージョンの宝石を使うことはできません。 I. 'my_gem.gem'?あるいは、 'GEM_PATH'変数は何のためですか? – Ajedi32

関連する問題