私は最近、いくつかの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
を実行しました。残念ながら、しかし
$ 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/
"gem directory"は、パッケージ化されていないgemを使用していることを示しています。それが私のやり方なの?現在の状況(私はパッケージ化された宝石を使用しています)のため、 ':path => 'vendor/gems/my_gem''はパス' C:/ Users/Ajedi32/my_app/vendor/gems/my_gem '存在しません。' – Ajedi32
そのディレクトリに 'my-gem.gemspec'ファイルが必要です。また、Gitのバージョン管理の下にそのディレクトリを置いて、ディレクトリをチェックアウトできるURLを指すようにすることもできます。 – Tilo
ああ、バンドルバージョンの宝石を使うことはできません。 I. 'my_gem.gem'?あるいは、 'GEM_PATH'変数は何のためですか? – Ajedi32