首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Mongoid/activesupport版本问题

Mongoid/activesupport版本问题
EN

Stack Overflow用户
提问于 2010-08-31 19:43:57
回答 2查看 1.3K关注 0票数 1

我试图在一个普通的Ruby脚本中使用Mongoid (不是通过Rails或任何其他框架),我认为我遇到了一些版本依赖冲突:

代码语言:javascript
运行
复制
/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,但得到了一个不同的错误:

代码语言:javascript
运行
复制
/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太新产生了新的冲突:

代码语言:javascript
运行
复制
/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。

以下是我使用的所有听起来相关的宝石:

代码语言:javascript
运行
复制
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)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-09-16 02:05:56

我想我也遇到了同样的问题。它似乎确实是由依赖冲突引起的。mongo 1.0.8将引入bson 1.0.7,但mongoid依赖于bson 1.0.4,这将导致冲突。我认为这都归结于mongoid beta所具有的非常特殊的依赖关系。

我设法让这两个gem组合在一起工作:

代码语言:javascript
运行
复制
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)。然后我就可以运行一个简单的脚本了。

票数 1
EN

Stack Overflow用户

发布于 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。

我建议你:

  1. 确保将Gemfile更改为使用Rails 3,重新生成Gemfile.lock并重新安装依赖项

gem "rails",3.0.0“$ bundle update $ bundle install

  • 如果问题仍然存在,请尝试升级到mongoid 2.0.0测试版。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3608640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档