0

我有一个本地 gem,我可以从脚本执行,显示在我的 Gemfile.lock 中安装,并在 Rails 控制台中返回 true,并带有“Gem.available?(”< gem name >")。

但是,当我尝试通过 rails 控制台(或 rake 任务或控制器)调用依赖此 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 也出现在我的 gem 列表中,用于控制台中的 bundle、Gemfile.lock 和 %( gem list )。

4

1 回答 1

0

万一有人遇到这种情况,诀窍是 Bundler 的一个错误。

  1. 在没有路径的情况下在 Gemfile 中声明 gem (" gem '< gem name >','< version >' ")
  2. 将你的 gem 复制到 vendor/cache/
  3. 运行“捆绑安装--no-cache”。

即使您告诉它不要使用缓存,它也会找到 gem,安装它,并使其对 Rails 可用。

于 2013-08-09T00:31:16.167 回答