2010-08-31 72 views
1

我试图使用Mongoid从一个普通的Ruby脚本(不通过导轨或任何其他框架),我想我遇到一些版本依赖冲突:Mongoid /版本的ActiveSupport问题

/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,并且如果我正确地读取了错误,有一个要求说主动支持必须是< 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还是很新的,所以请在你的答案中详细说明。

升级到每西蒙的建议下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) 
+0

真的很好的问题!我遇到了类似的情况。我只是想单独从Rails做一些基准测试。史蒂夫胡克的建议很好地工作。 – randomguy 2010-09-16 11:03:41

回答

1

我想我遇到了同样的问题。它似乎是由依赖冲突引起的。 mongo 1.0.8将拉入bson 1.0.7,但mongoid依赖于导致冲突的bson 1.0.4。我认为这一切都归结为mongoid测试版具有的特定依赖关系。

我设法得到宝石的结合一起工作:

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) 

这意味着我必须明确地安装蒙戈1.0.7和1.0.4 BSON和卸载最新版本(1.0.8蒙戈和bson 1.0.7)。那时我能够运行一个简单的脚本。

+0

工程就像一个魅力! – randomguy 2010-09-16 11:03:57

+0

不幸的是Rake(0.8.7)取决于bson(1.0.7)。 – randomguy 2010-09-16 12:29:56

+0

我遇到同样的问题,只能用较新的版本号。 – 2011-01-24 06:00:51

1

确实有一个宝石版本冲突。

有可用的mongoid的两个版本现在: * 1.9.1 stable * 2.0.0 beta

两个应该使用Rails 3,工作得很好,即使mongoid 1.9.1,这是比较老一点,取决于其activesupport <= 3.0.0意味着Rails 3是一个有效的依赖。 也许,你还在使用Rails 3 RC。

我建议你:

  1. 确保你改变了你的Gemfile用Rails 3,再生您Gemfile.lock的和重新安装依赖

    gem "rails", 3.0.0" 
    
    $ bundle update 
    $ bundle install 
    
  2. 如果问题仍然存在,尝试升级到mongoid 2.0.0测试版。

+1

我不认为1)是我的选择。我没有使用Rails,只是一个从shell运行的.rb文件。我尝试升级到mongoid 2.0.0,必须升级到bson 1.0.7,现在我告诉'不能激活bson(= 1.0.4,运行时)为[“mongoid-2.0.0.beta.17 “],已经为[”mongo-1.0.7“,”mongoid-2.0.0.beta.17“]激活了bson-1.0.7。为什么它不够聪明,不能在这里使用正确的版本?其他东西是否使用1.0.4? – 2010-08-31 18:25:05