0

スクリプトから実行できるローカルの gem があり、インストール済みとして Gemfile.lock に表示され、Rails コンソールで "Gem.available?("< gem name >") で true を返します。

ただし、Rails コンソール (または rake タスクまたはコントローラー) を介して、この gem に依存するスクリプトを呼び出すためにこの gem を要求しようとすると、「`require': cannot load such file -- < gem name> 」というメッセージが表示されます。

RubyGems 環境:

- RUBYGEMS VERSION: 1.8.25
- RUBY VERSION: 1.9.3 (2013-02-06 patchlevel 385) [x86_64-linux]
- INSTALLATION DIRECTORY: /home/www-data/.rvm/gems/ruby-1.9.3-p385
- RUBY EXECUTABLE: /home/www-data/.rvm/rubies/ruby-1.9.3-p385/bin/ruby
- EXECUTABLE DIRECTORY: /home/www-data/.rvm/gems/ruby-1.9.3-p385/bin
- RUBYGEMS PLATFORMS:
  - ruby
  - x86_64-linux
- GEM PATHS:
  - /home/www-data/.rvm/gems/ruby-1.9.3-p385
  - /home/www-data/.rvm/gems/ruby-1.9.3-p385@global
- GEM CONFIGURATION:
  - :update_sources => true
  - :verbose => true
  - :benchmark => false
  - :backtrace => false
  - :bulk_threshold => 1000
- REMOTE SOURCES:
  - http://rubygems.org

irb:

$ irb
1.9.3-p385 :001 > require '<gem name>'
=> true

コンソール:

RAILS_ENV=production rails console
Loading production environment (Rails 3.2.3)
1.9.3-p385 :001 > require '<gem name>'
LoadError: cannot load such file -- <gem name>

コンソールは別の環境で動作していますか? %x( which ruby​​ ) はノーと言うでしょう.. gem は、コンソールのバンドル、Gemfile.lock、および %( gem list ) の両方の gem リストにも表示されます。

4

1 に答える 1

0

誰かがこれに遭遇した場合、トリックは Bundler のバグです。

  1. Gemfile でパスなしで gem を宣言します (" gem '< gem name >','< version >' ")
  2. gem を vendor/cache/ にコピーします
  3. 「bundler install --no-cache」を実行します。

キャッシュを使用しないように指定した場合でも、Gem を見つけてインストールし、Rails で使用できるようにします。

于 2013-08-09T00:31:16.167 に答える