2013-03-12 8 views
9

Ich habe eine Rails Mountable App erstellt und 'Mongoid' und 'Rspec' Gems hinzugefügt. Wenn ich versuche, meine Brille jetzt betreibe ich die folgende Fehlermeldung erhalten:Rails Engine + Mongoid: Es konnte keine Konfiguration für eine Sitzung mit dem Namen 'default' gefunden werden.

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. 

Wenn ich die Mongoid.load!(Rails.root.join("config", "mongoid.yml")) Linie in den spec_helper.rb alles funktioniert normal.

Warum ist das und wie bekomme ich die Funktionalität wie in einer normalen Rails App, wo ich die Ladefunktion nicht aufrufen muss?

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 

Versionen:

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

Können Sie Ihre mongoid.yml Datei schreiben? –

Antwort

19

Sie wahrscheinlich verpasst require 'rails/mongoid' in Ihrer spec_helper.rb Datei.

Hat jemand hier https://github.com/mongoid/mongoid/issues/2894#issuecomment-14903927

Versuchen fügen hinzu, dass erfordern das gleiche Problem hat, dass es beheben soll.

+0

Wo finde ich diese 'spec_helper.rb' Datei? –

+0

Ich fand in der 'Echo' Beispielprojekt für Mongoid + Schienen, und ich hatte nicht die' spec'-Ordner in meinem generierten App-Ordner –

+2

spec_helper.rb wird von RSPEC generiert, wenn Sie nicht mit RSPEC, setzen Sie es auf Ihrer Bewerbung.rb –

2

und starten Sie den Server nach Änderungen

4

Dies ist wahrscheinlich wegen zwei gleichzeitiger Bedingungen mongoid.yml: (es gibt keinen Produktionsabschnitt in mongoid.yml) und (Heroku behandelt Rails-Anwendungen wie die Produktion von Standard) .

Die Befestigung einer der beiden muss ausreichen.

1. Es gibt keine Produktion Abschnitt in mongoid.yml

Produktionsabschnitt In der mongoid.yml, wie bei Heroku erklärt, z.B.

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

2. Heroku behandelt Schienen Anwendungen als Produktion von Standard

Set Heroku Umgebung für die Entwicklung, oder eine neue Umgebung hinzufügen, die zu Heroku spezifisch sein würde, wie es bei Heroku erklärt, z.B.

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

Ich habe diese Arbeit gefunden - bemerken, dass es keine „Sitzungen“ ist, nur „Kunden“

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

Das ist für mich auf meinem Rechner gearbeitet: diese in Ihre config/application.rb

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

2: Und ändern Sie Ihre Mongoid.yml von beispielsweise (nur für mongoid Version < 5):

Diese

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 

An:

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