【问题标题】:Gem not accessible from RoR console, but irb/bundle has it宝石无法从 RoR 控制台访问,但 irb/bundle 有
【发布时间】:2013-08-10 03:04:00
【问题描述】:

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

但是,当我尝试 require 这个 gem 以便通过 rails 控制台(或 rake 任务或控制器)调用依赖它的脚本时,我得到“`require': cannot load such file -- ”。

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 )。

【问题讨论】:

  • 您需要的内容并不总是与 Gem 名称相同:stackoverflow.com/questions/132867/… Gem 的文档应该告诉您如何需要它。
  • 就是这种情况。我在脚本顶部使用 require '' ,该脚本使用相同的 gem 运行良好。 Rails 中的某些东西没有看到此 gem 已安装。我什至无法使用 %x() 执行该工作脚本。
  • gem 是否在你的 Gemfile 中的生产组中定义?
  • 否定的,先生。它位于 Gemfile 的任何组之外的底部。

标签: ruby-on-rails gem


【解决方案1】:

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

  1. 在没有路径的情况下在 Gemfile 中声明 gem (" gem '','' ")
  2. 将您的 gem 复制到 vendor/cache/
  3. 运行“bundle install --no-cache”。

即使你告诉它不要使用缓存,它也会找到 gem,安装它,然后让它对 Rails 可用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-10
    • 1970-01-01
    相关资源
    最近更新 更多