Rails Engine + Mongoid:找不到名为'default'的会话的配置

时间:2013-03-12 06:43:01

标签: rails-engines mongoid3

我创建了一个Rails可安装应用程序,并添加了'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时,一切正常。

为什么会这样,我如何获得像普通Rails应用程序中的功能,我不需要调用加载函数?

mongoid.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'

5 个答案:

答案 0 :(得分:20)

您可能错过了spec_helper.rb文件中的require 'rails/mongoid'

如果有人在这里遇到同样的问题https://github.com/mongoid/mongoid/issues/2894#issuecomment-14903927

尝试添加需要修复的内容。

答案 1 :(得分:4)

这可能是因为两个同时发生的情况:( mongoid.yml中没有生产部分)AND(Heroku默认将Rails应用程序视为生产)。

修复任何一个就足够了。

<强> 1。 mongoid.yml中没有生产部分

将生成部分添加到mongoid.yml,如Heroku所述,例如

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

<强> 2。 Heroku默认将rails应用程序视为生产

将Heroku环境设置为开发,或添加一个特定于Heroku的新环境,如Heroku所述,例如

heroku config:set RACK_ENV=development RAILS_ENV=development --remote development

答案 2 :(得分:2)

在更改mongoid.yml

后重启服务器

答案 3 :(得分:1)

我发现这个工作 - 注意没有&#34;会话&#34;,只有&#34;客户&#34;

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

答案 4 :(得分:0)

尝试重新生成新的mongoid.yml

rails g mongoid:config

并在更改mongoid.yml后使用您的值。