开发者

Mongoid/activesupport version problem

I'm attempting to use Mongoid from a plain Ruby script (not via Rails or any other framework) and I think I'm running into some version dependency conflicts:

/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

My local Rails has been upgraded to 3.0.0 already, and if I read the error correctly, somewhere there's a requirement saying activesupport has to be < 3.0.pre, and 3.0.0 is too new?

Is this because Rails 3.0 is brand new and maybe Mongoid has a config option somewhere with 3.0.pre defined that I need to upgrade? Where would I do that?

I used to have the old Rails still installed too, but got a different error:

/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 ./rubymon开发者_如何学Cgo.rb:4

If I go back to having an older activesupport installed, how do I make sure the newer one isn't being hit as well?

I'm still very new to Ruby, so please elaborate in your answer.

After upgrading to the Mongoid 2.0 beta per Simon's suggestion, I'm getting a new conflict about bson being too new:

/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

Why is bson 1.0.4 already loaded? Is something else trying to load it explicitly? All my simple .rb script requires is rubygems and mongoid at this point.

Here's all the gems I use that sound relevant:

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)


I think I came across the same problem. It does seem to be caused by a dependency clash. mongo 1.0.8 will pull in bson 1.0.7 but mongoid depends on bson 1.0.4 which leads to the clash. I think it all comes down to the very specific dependencies that the mongoid beta has.

I managed to get this combination of gems working together:

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)

This meant that I had to explicitly install mongo 1.0.7 and bson 1.0.4 and uninstall the latest versions (mongo 1.0.8 and bson 1.0.7). I was then able to run a simple script.


Indeed there's a Gem version conflict.

There are two versions of mongoid available right now: * 1.9.1 stable * 2.0.0 beta

Both should work well with Rails 3. Even mongoid 1.9.1, which is a little bit more old, depends on activesupport <= 3.0.0 which means Rails 3 is a valid dependency. Perhaps, you're still working with Rails 3 RC.

I suggest you to:

  1. Make sure you changed your Gemfile to use Rails 3, regenerated your Gemfile.lock and reinstalled the dependencies

    gem "rails", 3.0.0"
    
    $ bundle update
    $ bundle install
    
  2. If the problem persist, try upgrading to mongoid 2.0.0 beta.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜