views:

505

answers:

2

Greetings

I am trying to get Mongoid to work with my Rails app and I am getting an error: "Mongoid::Errors::InvalidDatabase in 'Shipment bol should be unique' Database should be a Mongo::DB, not NilClass" I have created the mongoid.yml file in my config directory and have mongodb running as a daemon. The config file is like so:

defaults: &defaults  
host: localhost 

development:  
  <<: *defaults  
  database: ship-it-development 

test:  
  <<: *defaults  
  database: ship-it-test 

production: 
  <<: *defaults  
  host: <%= ENV['MONGOID_HOST'] %>  
  port: <%= ENV['MONGOID_PORT'] %>  
  database: <%= ENV['MONGOID_DATABASE'] %>

All of my specs fail with the above error. I am using rails 2.3.8.

Anyone have ideas?

+1  A: 

Like explain on question : http://stackoverflow.com/questions/2802087/how-can-i-generate-mongoid-yml-config-in-rail-2-3-5

The mongoid.yml doesn't works with Rails 2.3.x. It's load automatic only with Rails 3.

You need add an initializer with loading your file and use it to define your database.

By example you can add that in an initializer.

mongoid_conf = YAML::load_file(Rails.root.join('config/mongoid.yml'))[Rails.env]

Mongoid.configure do |config|
 config.master = Mongo::Connection.new(mongoid_conf['host'], 
                                       mongoid_conf['port']).db(mongoid_conf['database'])
end
shingara
thanks that worked for me.
Adam T
A: 

Also if your writing your own non rails script and you initialize your models first then you will get this error.

You need to configure the database before initializing the model.

I hit this when writing a gem that used mongoid internally

Test cases hit it as well so put the Mongoid.configure section in your test/helper.rb

Pete Brumm