Ruby on rails Gem无法从RoR控制台访问,但irb/bundle有它

Ruby on rails Gem无法从RoR控制台访问,但irb/bundle有它,ruby-on-rails,gem,Ruby On Rails,Gem,我有一个本地gem,可以从脚本执行,在安装时显示在我的Gemfile.lock中,并在rails控制台中以“gem.available”(“”)返回true 然而,当我试图通过rails控制台(或rake任务或控制器)调用依赖于它的脚本时,我得到了“require”:无法加载这样的文件-- RubyGems环境: - RUBYGEMS VERSION: 1.8.25 - RUBY VERSION: 1.9.3 (2013-02-06 patchlevel 385) [x86_64-linux]

我有一个本地gem,可以从脚本执行,在安装时显示在我的Gemfile.lock中,并在rails控制台中以“gem.available”(“”)返回true

然而,当我试图通过rails控制台(或rake任务或控制器)调用依赖于它的脚本时,我得到了“require”:无法加载这样的文件--

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
1.9.3-p385:001>要求“
=>正确
控制台:

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>
RAILS\u ENV=生产RAILS控制台
加载生产环境(Rails 3.2.3)
1.9.3-p385:001>要求“
LoadError:无法加载此文件--

控制台是否在一个单独的环境中运行?%x(哪个ruby)会说不。gem也会出现在我的gem列表中,用于控制台中的bundle、Gemfile.lock和%(gem list)。

如果有人遇到这种情况,诀窍是Bundler有一个bug

  • 在没有路径的gem文件中声明gem(“gem”,“”)
  • 将您的gem复制到供应商/缓存中/
  • 运行“bundler安装--无缓存”

  • 即使您告诉它不要使用缓存,它也会找到gem,安装它,并将其提供给Rails。

    您需要的并不总是与gem名称相同:gem的文档应该告诉您如何需要它。在这种情况下,我会在一个运行良好的脚本顶部使用require“”使用相同的gem。Rails中的某些内容没有看到此gem已安装。我甚至无法使用%x()执行该工作脚本。gem是否在您的Gemfile中的生产组中定义?否,先生。它位于任何组之外的Gemfile底部。
    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>