【问题标题】:Ruby gems not found, but they're installed未找到 Ruby gem,但已安装
【发布时间】:2011-03-24 23:07:55
【问题描述】:

当我尝试加载 Rails 控制台(或加载运行 Apache/Passenger 的网站)时,我收到一个错误,提示它无法加载我已经安装的 gem:

> 脚本/控制台 加载开发环境(Rails 2.3.8) 没有要加载的文件——authlogic /usr/lib/ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require' /usr/lib/ruby/1.8/rubygems/custom_require.rb:36:in `require' /var/lib/gems/1.8/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:156:in `require' /var/lib/gems/1.8/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:521:in `new_constants_in' /var/lib/gems/1.8/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:156:in `require' /var/lib/gems/1.8/gems/rails-2.3.8/lib/rails/gem_dependency.rb:215:in `load' /var/lib/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:307:in `load_gems' /var/lib/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:307:in `each' /var/lib/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:307:in `load_gems' /var/lib/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:164:in `进程' /var/lib/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:113:in `send' /var/lib/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:113:in `run' /home/nblade/vipreblade/src/console/config/environment.rb:11 /usr/lib/ruby/1.8/irb/init.rb:254:in `require' /usr/lib/ruby/1.8/irb/init.rb:254:in `load_modules' /usr/lib/ruby/1.8/irb/init.rb:252:in `每个' /usr/lib/ruby/1.8/irb/init.rb:252:in `load_modules' /usr/lib/ruby/1.8/irb/init.rb:21:in `setup' /usr/lib/ruby/1.8/irb.rb:54:in `start' /usr/bin/irb:13 没有要加载的文件——机械师 /usr/lib/ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require' /usr/lib/ruby/1.8/rubygems/custom_require.rb:36:in `require' /var/lib/gems/1.8/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:156:in `require' /var/lib/gems/1.8/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:521:in `new_constants_in' /var/lib/gems/1.8/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:156:in `require' /var/lib/gems/1.8/gems/rails-2.3.8/lib/rails/gem_dependency.rb:215:in `load' /var/lib/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:307:in `load_gems' /var/lib/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:307:in `each' /var/lib/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:307:in `load_gems' /var/lib/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:164:in `进程' /var/lib/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:113:in `send' /var/lib/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:113:in `run' /home/nblade/vipreblade/src/console/config/environment.rb:11 /usr/lib/ruby/1.8/irb/init.rb:254:in `require' /usr/lib/ruby/1.8/irb/init.rb:254:in `load_modules' /usr/lib/ruby/1.8/irb/init.rb:252:in `每个' /usr/lib/ruby/1.8/irb/init.rb:252:in `load_modules' /usr/lib/ruby/1.8/irb/init.rb:21:in `setup' /usr/lib/ruby/1.8/irb.rb:54:in `start' /usr/bin/irb:13 没有要加载的文件——authlogic /usr/lib/ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require' /usr/lib/ruby/1.8/rubygems/custom_require.rb:36:in `require' /var/lib/gems/1.8/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:156:in `require' /var/lib/gems/1.8/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:521:in `new_constants_in' /var/lib/gems/1.8/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:156:in `require' /var/lib/gems/1.8/gems/rails-2.3.8/lib/rails/gem_dependency.rb:215:in `load' /var/lib/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:307:in `load_gems' /var/lib/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:307:in `each' /var/lib/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:307:in `load_gems' /var/lib/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:169:在“进程”中 /var/lib/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:113:in `send' /var/lib/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:113:in `run' /home/nblade/vipreblade/src/console/config/environment.rb:11 /usr/lib/ruby/1.8/irb/init.rb:254:in `require' /usr/lib/ruby/1.8/irb/init.rb:254:in `load_modules' /usr/lib/ruby/1.8/irb/init.rb:252:in `每个' /usr/lib/ruby/1.8/irb/init.rb:252:in `load_modules' /usr/lib/ruby/1.8/irb/init.rb:21:in `setup' /usr/lib/ruby/1.8/irb.rb:54:in `start' /usr/bin/irb:13 没有要加载的文件——机械师 /usr/lib/ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require' /usr/lib/ruby/1.8/rubygems/custom_require.rb:36:in `require' /var/lib/gems/1.8/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:156:in `require' /var/lib/gems/1.8/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:521:in `new_constants_in' /var/lib/gems/1.8/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:156:in `require' /var/lib/gems/1.8/gems/rails-2.3.8/lib/rails/gem_dependency.rb:215:in `load' /var/lib/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:307:in `load_gems' /var/lib/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:307:in `each' /var/lib/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:307:in `load_gems' /var/lib/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:169:在“进程”中 /var/lib/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:113:in `send' /var/lib/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:113:in `run' /home/nblade/vipreblade/src/console/config/environment.rb:11 /usr/lib/ruby/1.8/irb/init.rb:254:in `require' /usr/lib/ruby/1.8/irb/init.rb:254:in `load_modules' /usr/lib/ruby/1.8/irb/init.rb:252:in `每个' /usr/lib/ruby/1.8/irb/init.rb:252:in `load_modules' /usr/lib/ruby/1.8/irb/init.rb:21:in `setup' /usr/lib/ruby/1.8/irb.rb:54:in `start' /usr/bin/irb:13 缺少这些必需的宝石: 授权逻辑 机械师 你正在运行: /usr/bin/ruby1.8 上的 ruby​​ 1.8.7.249 /var/lib/gems/1.8 中的 ruby​​gems 1.3.5 运行 rake gems:install 来安装缺少的 gem。

所以,我按照以下说明安装 gems:

> sudo rake 宝石:安装 --trace (在 /home/nblade/vipreblade/src/console 中) 弃用警告:vendor/plugins/delayed_job/tasks、vendor/plugins/easy-fckeditor/tasks、vendor/plugins/jrails/tasks 和 vendor/plugins/restful_authentication/tasks 中的 Rake 任务已弃用。请改用 lib/tasks。 (从 /var/lib/gems/1.8/gems/rails-2.3.8/lib/tasks/rails.rb:10 调用) ** 调用 gems:install (first_time) ** 调用 gems:base (first_time) ** 执行 gems:base ** 调用环境(first_time) ** 执行环境 ** 执行 gems:install

它没有安装任何东西,所以我检查了我的 gem 环境以获得良好的测量:

> 宝石环境 RubyGems 环境: - 红宝石版本:1.3.5 - 红宝石版本:1.8.7(2010-01-10 补丁级别 249)[i486-linux] - 安装目录:/var/lib/gems/1.8 - 红宝石可执行文件:/usr/bin/ruby1.8 - 可执行目录:/var/lib/gems/1.8/bin - 红宝石平台: - 红宝石 - x86-linux - 宝石路径: - /var/lib/gems/1.8 - 宝石配置: - :update_sources => 真 - :详细 => 真 - :基准 => 假 - :回溯 => 假 - :bulk_threshold => 1000 - “宝石” => “--no-ri --no-rdoc” - :sources => ["http://gemcutter.org", "http://gems.github.com"] - 远程资源: - http://gemcutter.org - http://gems.github.com > 哪颗宝石 /usr/bin/gem > ls -al /usr/bin/gem lrwxrwxrwx 1 root root 21 2010-07-14 11:29 /usr/bin/gem -> /etc/alternatives/gem > ls -al /etc/alternatives/gem lrwxrwxrwx 1 root root 15 2010-07-14 11:29 /etc/alternatives/gem -> /usr/bin/gem1.8 > ls -al /usr/bin/gem1.8 -rwxr-xr-x 1 根 545 2009-10-09 17:51 /usr/bin/gem1.8 > 回声 $PATH /var/lib/gems/1.8/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games > 回声 $GEM_PATH /var/lib/gems/1.8: > 哪个红宝石 /usr/bin/红宝石 > ls -al /usr/bin/ruby lrwxrwxrwx 1 root root 7 2010-07-13 19:54 /usr/bin/ruby -> ruby​​1.8 > ls -al /usr/bin/ruby1.8 -rwxr-xr-x 1 root root 5488 2010-03-19 10:53 /usr/bin/ruby1.8 > /usr/bin/ruby -v ruby 1.8.7 (2010-01-10 补丁级别 249) [i486-linux]

我还验证了宝石已安装:

> ls -al /var/lib/gems/1.8/gems | grep 授权逻辑 drwxr-xr-x 7 根根 4096 2010-08-03 12:14 authlogic-2.1.5 > ls -al /var/lib/gems/1.8/gems | grep 机械师 drwxr-xr-x 4 根根 4096 2010-08-03 12:14 机械师-1.0.6

所以,很明显我做错了什么,但我不确定还有什么要检查的。有什么建议吗?

谢谢。

【问题讨论】:

  • 你可能安装了多个版本的 Ruby 吗?
  • 这是我考虑的,所以我仔细检查了:> which ruby​​ /usr/bin/ruby > ls -al /usr/bin/ruby lrwxrwxrwx 1 root root 7 2010-07-13 19:54 /usr/bin/ruby -> ruby​​1.8 > ls -al /usr/bin/ruby1.8 -rwxr-xr-x 1 root root 5488 2010-03-19 10:53 /usr/bin/ruby1.8
  • 谢谢!在我的情况下,gem 更新后突然 gem env 显示 INSTALLATION DIRECTORY: /usr/lib/ruby/gems/1.9.1 要么从 /var/lib/gems/1.9.1/gems/ 更改,要么突然丢失。用软链接修补。在我安装 100 个之前,gem1.9.1 list 是空的,我所有的脚本都失败了。

标签: ruby-on-rails ruby console rubygems gem


【解决方案1】:

“gem list | grep machinist”是否列出任何内容?您可以尝试运行“gem uninstall machinist”,然后运行“gem install machinist”

【讨论】:

  • 是的,宝石列表显示了两个缺失的宝石。我试图卸载/重新安装,但这没有帮助。重新安装后,我有: > gem list | grep 机械师机械师 (1.0.6) > 宝石列表 | grep authlogic authlogic (2.1.5)
【解决方案2】:

找到了。我忘记了我之前解压缩过 gem,所以我查看了我的 rails 项目的 vendor/gems,果然,authlogic 和机械师 gem 目录中都没有任何代码(尽管该目录确实存在并且包含 .规范文件)。所以,为了解决这个问题,我这样做了:

rake gems:unpack:dependencies
rake gems:build

验证我做了什么:

rake gems

现在script/console 和 Apache/Passenger 工作正常!

【讨论】:

  • 我试图接受它,但它告诉我我必须等待几天。感谢您的提醒。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-03
  • 2023-03-21
相关资源
最近更新 更多