mongoid with rails - 数据库应该是Mongo :: DB,而不是NilClass“

时间:2010-05-30 22:23:58

标签: ruby-on-rails mongodb mongoid

问候

我正在努力让Mongoid使用我的Rails应用程序而且我正在使用 错误:"Mongoid::Errors::InvalidDatabase in 'Shipment bol should be unique' Database should be a Mongo::DB, not NilClass" 我在配置目录中创建了mongoid.yml文件,并将mongodb作为守护进程运行。配置文件是这样的:

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'] %>

我的所有规格都因上述错误而失败。我正在使用rails 2.3.8。

有人有想法吗?

2 个答案:

答案 0 :(得分:3)

喜欢解释问题:How can i generate mongoid.yml config in Rail 2.3.5?

mongoid.yml不适用于Rails 2.3.x.它仅使用Rails 3自动加载。

您需要添加初始化程序并加载文件并使用它来定义数据库。

例如,您可以在初始化程序中添加它。

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

答案 1 :(得分:3)

此外,如果您编写自己的非rails脚本并首先初始化模型,那么您将收到此错误。

您需要在初始化模型之前配置数据库。

我在写一个内部使用mongoid的宝石

时遇到了这个

测试用例也会点击它,所以将Mongoid.configure部分放在test / helper.rb中