1

问候

我试图让 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'] %>

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

有人有想法吗?

4

2 回答 2

3

就像对问题的解释:如何在 Rail 2.3.5 中生成 mongoid.yml 配置?

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
于 2010-05-31T06:46:53.690 回答
3

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

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

我在编写内部使用 mongoid 的 gem 时遇到了这个问题

测试用例也命中了它,所以把 Mongoid.configure 部分放在你的 test/helper.rb

于 2010-08-17T01:37:27.040 回答