2013-03-12 4 views
9

Я создал приложение Rails Mountable и добавил «монгоидные» и «rspec» драгоценные камни. Если я пытаюсь запустить свои функции теперь я получаю следующее сообщение об ошибке:Rails Engine + Mongoid: Конфигурация не найдена для сеанса с именем «по умолчанию»

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' 
+0

Вы можете разместить свой файл mongoid.yml? –

ответ

19

вы, вероятно, пропустил require 'rails/mongoid' в файле spec_helper.rb.

Если бы кто-то, имеющий тот же вопрос здесь https://github.com/mongoid/mongoid/issues/2894#issuecomment-14903927

Попробуйте добавить, что требуется, это должно исправить.

+0

Где я могу найти файл 'spec_helper.rb'? –

+0

Я нашел в проекте примера Echo для mongoid + rails, и у меня не было папки 'spec' в моей сгенерированной папке приложения –

+2

spec_helper.rb генерируется rspec, если вы не используете rspec, поставьте его на вашем приложении.rb –

2

и перезапустить сервер после внесения изменений в mongoid.yml

4

Это, вероятно, из-за двух одновременных условий: (нет раздела продукции в mongoid.yml) И (Heroku обрабатывает Rails приложения в производстве по умолчанию) ,

Крепление либо должно быть достаточным.

1. Там нет раздела продукции в mongoid.yml

Добавить производства раздел mongoid.yml, как описано в Heroku, например,

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

2. Heroku обрабатывает рельсы приложения, как производство по умолчанию

Установить среду Heroku для развития, или добавить новую среду, которая была бы специфичны для Heroku, как описано в Heroku, например,

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

Я нашел эту работу - обратите внимание нет «сеансов», только «клиентов»

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

Это работает для меня на моей машине

1: Добавьте это к вашему config/application.rb

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

2: И замените свой мангоид.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 

To:

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 

 Смежные вопросы

  • Нет связанных вопросов^_^