我正在尝试从普通的 Ruby 脚本(不是通过 Rails 或任何其他框架)中使用 Mongoid,我认为我遇到了一些版本依赖冲突:
/opt/local/lib/ruby/site_ruby/1.8/rubygems.rb:779:in `report_activate_error': RubyGem version error: activesupport(3.0.0 not >= 2.2.2, < 3.0.pre) (Gem::LoadError)
from /opt/local/lib/ruby/site_ruby/1.8/rubygems.rb:214:in `activate'
from /opt/local/lib/ruby/site_ruby/1.8/rubygems.rb:1082:in `gem'
from /opt/local/lib/ruby/gems/1.8/gems/mongoid-1.9.1/lib/mongoid.rb:24
from /opt/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require'
from /opt/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `require'
from ./rubymongo.rb:4
我的本地 Rails 已经升级到 3.0.0,如果我正确阅读错误,某处要求 activesupport 必须 < 3.0.pre,并且 3.0.0 太新?
这是因为 Rails 3.0 是全新的,也许 Mongoid 在某处有一个配置选项,其中 3.0.pre 定义了我需要升级?我会在哪里做呢?
我以前也安装了旧的 Rails,但得到了一个不同的错误:
/opt/local/lib/ruby/site_ruby/1.8/rubygems.rb:233:in `activate': can't activate activesupport (>= 2.2.2, < 3.0.pre, runtime) for [], already activated activesupport-3.0.0 for ["mongoid-1.9.1"] (Gem::LoadError)
from /opt/local/lib/ruby/site_ruby/1.8/rubygems.rb:1082:in `gem'
from /opt/local/lib/ruby/gems/1.8/gems/mongoid-1.9.1/lib/mongoid.rb:24
from /opt/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require'
from /opt/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `require'
from ./rubymongo.rb:4
如果我回去安装旧的 activesupport,我如何确保新的也不会被击中?
我对 Ruby 还是很陌生,所以请详细说明你的答案。
根据 Simon 的建议升级到 Mongoid 2.0 beta 后,我遇到了一个关于 bson 太新的新冲突:
/opt/local/lib/ruby/site_ruby/1.8/rubygems.rb:233:in `activate': can't activate bson (= 1.0.4, runtime) for ["mongoid-2.0.0.beta.17"], already activated bson-1.0.7 for ["mongo-1.0.7", "mongoid-2.0.0.beta.17"] (Gem::LoadError)
from /opt/local/lib/ruby/site_ruby/1.8/rubygems.rb:249:in `activate'
from /opt/local/lib/ruby/site_ruby/1.8/rubygems.rb:248:in `each'
from /opt/local/lib/ruby/site_ruby/1.8/rubygems.rb:248:in `activate'
from /opt/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:35:in `require'
from ./rubymongo.rb:4
为什么已经加载了 bson 1.0.4?是否有其他东西试图显式加载它?在这一点上,我所有的简单 .rb 脚本需要的是 rubygems 和 mongoid。
这是我使用的所有与声音相关的宝石:
actionpack (3.0.0, 2.3.8)
activemodel (3.0.0)
activerecord (3.0.0)
activeresource (3.0.0)
activesupport (3.0.0)
bson (1.0.7, 1.0.4)
bson_ext (1.0.7)
mongo (1.0.8, 1.0.7)
mongo_ext (0.19.3)
mongoid (2.0.0.beta.17)
rails (3.0.0, 2.3.8)