我试图在一个普通的Ruby脚本中使用Mongoid (不是通过Rails或任何其他框架),我认为我遇到了一些版本依赖冲突:
/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中有一个配置选项,我需要升级?我该在哪里做呢?
我曾经也安装了旧的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,如何确保较新的activesupport不会受到同样的影响?
我对Ruby还很陌生,所以请在你的回答中详细说明。
根据Simon的建议升级到Mongoid 2.0测试版后,我对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)发布于 2010-09-16 02:05:56
我想我也遇到了同样的问题。它似乎确实是由依赖冲突引起的。mongo 1.0.8将引入bson 1.0.7,但mongoid依赖于bson 1.0.4,这将导致冲突。我认为这都归结于mongoid beta所具有的非常特殊的依赖关系。
我设法让这两个gem组合在一起工作:
activemodel (3.0.0)
activesupport (3.0.0)
rails (3.0.0)
mongo (1.0.7)
mongoid (2.0.0.beta.18)
bson (1.0.4)这意味着我必须显式地安装mongo 1.0.7和bson 1.0.4,并卸载最新版本(mongo 1.0.8和bson 1.0.7)。然后我就可以运行一个简单的脚本了。
发布于 2010-08-31 23:13:14
确实存在Gem版本冲突。
目前有两个版本的2.0.0 beta:* 1.9.1 stable * mongoid
即使是更老一点的mongoid1.9.1,也依赖于activesupport <= 3.0.0,这意味着Rails3是一个有效的依赖。也许,您仍在使用Rails3RC。
我建议你:
gem "rails",3.0.0“$ bundle update $ bundle install
https://stackoverflow.com/questions/3608640
复制相似问题