【问题标题】:RubyGem version error: rails(1.2.3 not >= 3.0)RubyGem 版本错误:rails(1.2.3 not >= 3.0)
【发布时间】:2012-03-31 04:44:43
【问题描述】:

我正在维护一个古老的 RoR 站点,我们正在用 Django 重写该站点。该站点是在 Rails 处于起步阶段时由其他人编写的,直到我开始使用它之前没有人保持更新。一两个晚上前,服务器宕机了,我怀疑是因为 MySQL 更新。在尝试修复它的过程中,我们破坏了它,现在 mongrel 无法启动。我在杂种日志中看到了这一点:

/home/USER/rails/SITE/config/boot.rb:26:Warning: Gem::SourcUSERdex#search support for String patterns is deprecated, use #find_name
/usr/local/lib/site_ruby/1.8/rubygems.rb:812:in `report_activate_error': RubyGem version error: rails(1.2.3 not >= 3.0) (Gem::LoadError)
    from /usr/local/lib/site_ruby/1.8/rubygems.rb:223:in `activate'
    from /usr/local/lib/site_ruby/1.8/rubygems.rb:258:in `activate'
    from /usr/local/lib/site_ruby/1.8/rubygems.rb:257:in `each'
    from /usr/local/lib/site_ruby/1.8/rubygems.rb:257:in `activate'
    from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:33:in `require'
    from /home/USER/rails/SITE/config/environment.rb:24
    from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:29:in `gem_original_require'
    from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:29:in `require'
    from /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/rails.rb:147:in `rails'
    from /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/mongrel_rails:113:in `cloaker_'
    from /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/configurator.rb:149:in `call'
    from /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/configurator.rb:149:in `listener'
    from /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/mongrel_rails:99:in `cloaker_'
    from /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/configurator.rb:50:in `call'
    from /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/configurator.rb:50:in `initialize'
    from /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/mongrel_rails:84:in `new'
    from /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/mongrel_rails:84:in `run'
    from /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/command.rb:212:in `run'
    from /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/mongrel_rails:281
    from /usr/local/bin/mongrel_rails:19:in `load'
    from /usr/local/bin/mongrel_rails:19

我四处搜索并尝试诊断错误。看起来 mongrel 希望我们拥有 rails 3+,这是不可能的,因为我们将在几周内更换该网站并且不想费心更新它(它只需要 工作现在)。如何强制 mongrel 使用当前版本的 rails 运行?

config/environment.rb 中,我们有RAILS_GEM_VERSION = '1.2.3' unless defined? RAILS_GEM_VERSION,我认为它会强制使用Rails 1.2.3。另外,这是gem list的输出:

*** LOCAL GEMS ***

abstract (1.0.0)
actionmailer (3.2.2, 3.0.3, 1.3.3)
actionpack (3.2.2, 3.0.3, 1.13.6, 1.13.3)
actionwebservice (1.2.6, 1.2.3)
activemodel (3.2.2, 3.0.3)
activerecord (3.2.2, 3.0.3, 1.15.6, 1.15.3)
activeresource (3.2.2, 3.0.3)
activesupport (3.2.2, 3.0.3, 1.4.4, 1.4.2)
acts_as_ferret (0.5.3, 0.4.3)
arel (3.0.2, 2.0.7)
builder (3.0.0, 2.1.2)
bundler (1.1.0, 1.0.9)
cgi_multipart_eof_fix (2.5.0)
daemons (1.1.8, 1.1.0)
erubis (2.7.0, 2.6.6)
fastthread (1.0.7)
ferret (0.11.6)
gem_plugin (0.2.3)
hike (1.2.1)
i18n (0.6.0, 0.5.0)
jk-ferret (0.11.8.3, 0.11.8.2)
journey (1.0.3)
json (1.6.5)
mail (2.4.3, 2.2.15)
mime-types (1.17.2, 1.16)
mongrel (1.1.5)
multi_json (1.1.0)
polyglot (0.3.3, 0.3.1)
rack (1.4.1, 1.2.1)
rack-cache (1.2)
rack-mount (0.8.3, 0.6.13)
rack-ssl (1.3.2)
rack-test (0.6.1, 0.5.7)
rails (1.2.3)
railties (3.2.2, 3.0.3)
rake (0.9.2.2, 0.8.7)
rdoc (3.12)
sprockets (2.1.2)
thor (0.14.6)
tilt (1.3.3)
treetop (1.4.10, 1.4.9)
tzinfo (0.3.32, 0.3.24)

感谢您的帮助!


好的,我想通了。它是不兼容的宝石。幸运的是,我们有一个测试服务器和一个生产服务器。我们昨晚才弄乱了测试服务器(生产服务器上的 mongrel 正在工作),所以我在两台服务器上都做了gem list,结果发现测试服务器有一个完全不同的列表。我刚刚在测试服务器上安装和卸载了 gem,直到 gem list 在两台服务器上生成了相同的列表。

【问题讨论】:

    标签: ruby-on-rails rubygems gem mongrel


    【解决方案1】:

    Mongrel 确实需要可用的最新 Rails 版本,但您的应用需要 Rails 1.2.3,因此存在冲突。

    避免 gems 冲突的最简单方法是使用不同的 gemsets(使用 rvm 或 rbenv)。或者如果不使用rails 3 gem,请移除它...

    【讨论】:

    • “或者如果没有使用 rails 3 gem 就移除它...” - 我该怎么做? gem list 没有列出已安装 Rails 3。
    • 您确实安装了一些 rails 3 gem 依赖项:actionmailer、actionpack、activemodel、activerecord、activeresource、activesupport、railties + 一些机架版本。删除这些gem的3+版本就OK了
    • 谢谢!你搞定了。我删除了不兼容的 gem,现在 mongrel 启动了。
    猜你喜欢
    • 1970-01-01
    • 2011-01-18
    • 1970-01-01
    • 1970-01-01
    • 2013-03-29
    • 2021-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多