1

ご挨拶

Rails アプリで Mongoid を動作させようとしていますが、エラーが発生します"Mongoid::Errors::InvalidDatabase in 'Shipment bol should be unique' Database should be a Mongo::DB, not NilClass" 。config ディレクトリに 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 を使用しています。

誰にもアイデアがありますか?

4

2 に答える 2

3

また、独自のレール以外のスクリプトを作成し、最初にモデルを初期化すると、このエラーが発生します。

モデルを初期化する前に、データベースを構成する必要があります。

内部でモンゴイドを使用するgemを書いているときにこれをヒットしました

テストケースもヒットしたので、Mongoid.configure セクションを test/helper.rb に入れます

于 2010-08-17T01:37:27.040 に答える
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 に答える