Skip to main content

Upgrading to Mongoid Beta 6

·197 words·1 min· ·
Ruby Rails Mongoid Monogdb
Ariejan de Vroom
Author
Ariejan de Vroom
Jack of all Trades, Professional Software Craftsman

If you are working with Rails 3 and Mongoid, you’re likely to upgrade to [mongoid-2.0.0.beta6][1]. That’s okay, but you will run into a few problems. Among others, one will be:

Database should be a Mongo::DB, not NilClass

or

Mongoid::Errors::InvalidDatabase: Mongoid::Errors::InvalidDatabase

Another, Mongoid-related problem is the error uninitialized constant OrderedHash.

Luckily, these problems can be solved quite easily. [1]: http://rubygems.org/gems/mongoid

The first thing you need to do is make sure you use the right version of bson_ext. Beta 6 requires you to run bson_ext-1.0.1 or you’ll get the OrderedHash error. Okay, with that out of the way, let’s focus on the MongoDB errors.

The problem is that Mongoid is accessed/used before it is properly initialized. To resolve this issue, add the following line to your other requires at the top of config/application.rb.

require 'mongoid/railtie'

With that, you initialize Mongoid correctly. Hope it helps.

Update: I also ran into keys must be strings or symbols errors. This is now a known issue with mongoid-2.0.0.beta6 and has been fixed in master. If you are using Bundler (you are, aren’t you?) then you can use the master branch instead of the gem:

# gem 'mongoid', '2.0.0.beta6'
gem 'mongoid', :git => 'http://github.com/durran/mongoid.git'

Related

Bundler + Passenger with Rails 2.3.5? Yes, please!
·236 words·2 mins
Ruby Rails Bundler Passenger
Speaking at Rails Underground
·111 words·1 min
General Ruby Rails Git Rails-Underground Speaking
has_one - find all that have no associated object
·109 words·1 min
General Ruby Rails Has_one Has_many Belongs_to