11

Rails Mountable App を作成し、'mongoid' および 'rspec' gem を追加しました。ここでスペックを実行しようとすると、次のエラーが発生します。

Mongoid::Errors::NoSessionConfig: 
Problem:
  No configuration could be found for a session named 'default'.
Summary:
  When attempting to create the new session, Mongoid could not find a session configuration for the name: 'default'. This is necessary in order to know the host, port, and options needed to connect.
Resolution:
  Double check your mongoid.yml to make sure under the sessions key that a configuration exists for 'default'. If you have set the configuration programatically, ensure that 'default' exists in the configuration hash.

Mongoid.load!(Rails.root.join("config", "mongoid.yml"))すべてに行を追加すると、spec_helper.rb正常に動作します。

それはなぜですか?また、load 関数を呼び出す必要のない通常の Rails アプリのように機能を取得するにはどうすればよいですか?

モンゴイド.yml

development:
  sessions:
    default:
      database: dummy_development
      hosts:
        - localhost:27017
      options:
  options:
test:
  sessions:
    default:
      database: dummy_test
      hosts:
        - localhost:27017
      options:
        consistency: :strong
        max_retries: 1
        retry_interval: 0

バージョン:

gem 'rails', '~> 3.2.12'
gem 'mongoid', '~> 3.1'
gem 'rspec-rails', '~> 2.13'
4

6 に答える 6

24

require 'rails/mongoid'おそらくspec_helper.rb ファイルを見逃しているでしょう。

ここで誰かが同じ問題を抱えていましたhttps://github.com/mongoid/mongoid/issues/2894#issuecomment-14903927

そのrequireを追加してみてください。これで修正されるはずです。

于 2013-03-14T20:16:00.420 に答える
5

これは私のマシンでうまくいきました

1: これを config/application.rb に追加します

Mongoid.load!("path to your mongoid.yml")

2: そして、mongoid.yml を (mongoid バージョン < 5 の場合のみ) から変更します。

これ

development:
  clients:
    default:
      database: database_for_development
        hosts:
          - localhost:27017
test:
  clients:
    default:
      database: database_for_test
        hosts:
          - localhost:27017
production:
  clients:
    default:
      database: database_for_production
        hosts:
          - localhost:27017

に:

development:
  sessions:
    default:
      database: database_for_development
        hosts:
          - localhost:27017
test:
  sessions:
    default:
      database: database_for_test
        hosts:
          - localhost:27017
production:
  sessions:
    default:
      database: database_for_production
        hosts:
          - localhost:27017
于 2016-08-23T13:11:19.597 に答える
4

これはおそらく、(mongoid.yml に production セクションがない) および (Heroku はデフォルトで Rails アプリケーションを production として扱う) という 2 つの条件が同時に発生したためです。

どちらかを修正すれば十分です。

1. mongoid.yml に production セクションがない

Herokuで説明されているように、mongoid.yml に production セクションを追加します。

production:
  sessions:
    default:
      uri: <%= ENV['MONGOHQ_URL'] %>
      options:
        skip_version_check: true
        safe: true

2. Heroku はデフォルトで Rails アプリケーションをプロダクションとして扱います

Herokuで説明されているように、Heroku 環境を development に設定するか、Heroku に固有の新しい環境を追加します。

heroku config:set RACK_ENV=development RAILS_ENV=development --remote development
于 2013-11-16T15:23:52.093 に答える
2

mongoid.yml に変更を加えた後、サーバーを再起動します。

于 2013-05-21T00:08:04.560 に答える