Ruby on rails 带rails的mongoid-数据库应该是Mongo::DB,而不是NilClass“;

Ruby on rails 带rails的mongoid-数据库应该是Mongo::DB,而不是NilClass“;,ruby-on-rails,mongodb,mongoid,Ruby On Rails,Mongodb,Mongoid,问候 我正在尝试让Mongoid与我的Rails应用程序一起工作,我正在 错误:“装运bol中的Mongoid::Errors::InvalidDatabase应为” “唯一”数据库应该是Mongo::DB,而不是NilClass“ 我在配置目录中创建了mongoid.yml文件,并将mongodb作为守护进程运行。配置文件如下所示: defaults: &defaults host: localhost development: <<: *defaults

问候

我正在尝试让Mongoid与我的Rails应用程序一起工作,我正在 错误:
“装运bol中的Mongoid::Errors::InvalidDatabase应为”
“唯一”数据库应该是Mongo::DB,而不是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'] %>
defaults:&defaults
主机:本地主机
发展:

我想解释一下这个问题:

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

我想解释一下这个问题:

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

另外,如果您编写自己的非rails脚本并首先初始化模型,则会出现此错误

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

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


测试用例也会遇到问题,因此将Mongoid.configure部分放在Test/helper.rb中。如果您编写自己的非rails脚本并首先初始化模型,则会出现此错误

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

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


测试用例也很成功,所以请将Mongoid.configure部分放在您的测试/helper.rb

您是在生产中还是在本地机器上开发?您是在生产中还是在本地机器上开发