0

Ich verwende die Rails 4.2.5 App auf meinem lokalen Rechner (OS X El Capitan). Es hat im Entwicklungsmodus gut funktioniert.Mein Rails 4.2.5 App-Server verbindet sich weiterhin mit der Produktions-Datenbank statt der Entwicklungs-Datenbank im Entwicklungsmodus

Aber dann entschied ich zu sehen, wie es im Produktionsmodus funktioniert, also auf Produktion umgestellt und den Server laufen.

bundle install --deployment --without development test 
bundle exec rake db:create RAILS_ENV=production 
bundle exec rake db:migrate RAILS_ENV=production 
bundle exec rake db:seed RAILS_ENV=production 
bundle exec rake assets:precompile RAILS_ENV=production 
bundle exec rails s -e production 

Nicht alles sah gut aus. Also habe ich einige Änderungen vorgenommen, bis alle richtig funktionieren.

Danach musste ich einige Funktionen hinzugefügt, so wieder in den Entwicklungsmodus zurückgeschaltet und den Server laufen.

bundle install 
bundle exec rake db:migrate 
bundle exec rake db:seed 
bundle exec rails s 

Der Server läuft ohne ein Problem, aber ich fand, dass es mit der Produktion db statt Entwicklung db arbeitet.

Ich habe versucht, alle Caches durch Ausführen von bundle exec rake tmp:cache:clear zu löschen, aber es hat nicht geholfen.

FYI, ich benutze Postgres für die Produktion und Entwicklung. Hier

ist die database.yml Datei:

default: &default 
    adapter: postgresql 
    encoding: unicode 
    pool: 30 

development: 
    <<: *default 
    username: <%= ENV['OATV_POSTGRES_USERNAME'] %> 
    password: <%= ENV['OATV_POSTGRES_PASSWORD'] %> 
    database: <%= ENV['OATV_POSTGRES_DATABASE_DEVELOPMENT'] %> 

test: 
    <<: *default 
    username: <%= ENV['OATV_POSTGRES_USERNAME'] %> 
    password: <%= ENV['OATV_POSTGRES_PASSWORD'] %> 
    database: <%= ENV['OATV_POSTGRES_DATABASE_TEST'] %> 

production: 
    <<: *default 
    url: <%= ENV['DATABASE_URL'] %> 

Natürlich, ich habe eingestellt alle env auf meinem lokalen Rechner Vars, da ich in Entwicklungs-, Test- und Produktionsbetrieb testen müssen.

Was ist die mögliche Ursache hier?

Vielen Dank für eine Antwort im Voraus.

+0

haben Sie den vorherigen daemonisierte Produktionsserver zu töten? – sixty4bit

+0

@ sechzig4bit tut mir leid. Ich habe den Text falsch geschrieben. Ich habe den Produktionsserver nicht als Daemon ausgeführt. Modifizierte die Frage entsprechend. – artificis

+0

Überprüfen Sie, ob RAILS_ENV in Ihr env exportiert wird. Vielleicht hast du das als Annehmlichkeit getan? –

Antwort

1

Nur um es hier zu schreiben. Mögliche Lösungen:

.Restart dem Server (sollte es alle unerwünschten Variablen löschen, die von Produktionsumgebung gesetzt waren, und nicht gelöscht, wenn in Entwicklungsmodus läuft) Z.B. url: <%= ENV['DATABASE_URL'] %> wurde von der Produktionsumgebung gesetzt, wurde aber nicht durch Entwicklungsmodus

.Mit gesetzt:

development: 
    <<: *default 

zu:

development: 
    <<: *default 
    url: postgres:///db/database-name 

So möchten Sie Ihre lokale Entwicklung zeigen Datenbank manuell, anstatt die bereits gespeicherte URL im Produktionsmodus zu verwenden

oder (vielleicht) drittens:

.Run bundle exec rails s -e development

+0

Lösung # 2 funktionierte für mich, aber nicht perfekt. Ich habe Postgres URL explizit für die Entwicklung in database.yml angegeben und jetzt verbindet es sich mit der Entwicklungsdb, was korrekt ist. Aber ich habe ein anderes Problem. Die Rails-Konsole ('bundle exec rails c') lädt' pry-rails' nicht, es lädt default irb. Ich habe in der Entwicklungsgruppe in der Gemfile Mühlenschienen angegeben. – artificis

+0

Hier ist Schienen Konsolenprotokolle: '' '→ Bündel exec Schienen c -e Entwicklung über Frühling preloader in Prozess Lauf 89518 Laden Entwicklungsumgebung (Rails 4.2.5) irb (main): 001: 0>' '' – artificis

+0

@consigliere heh, das ist ein bisschen anderes Problem, dann Verbindung zu einer Datenbank, aber für mich kommt alles auf die gleiche Ursache des Problems - einige Variablen wurden gesetzt, wenn Produktionsserver ausgeführt wurde und jetzt diese Variablen nicht im Entwicklungsmodus gesetzt werden und es verhält sich weiterhin so (wo Lösung 2 es beweist). Sie versuchen, es zu patchen (aber ok, wenn Neustart nicht in Frage kommt). Versuchen Sie, 'bundle install -e development' oder ähnliches auszuführen (wenn dieser Befehl möglich ist) und versuchen Sie auch, im Terminal' source ~/.bashrc' zu versuchen, alle Variablen erneut aus dieser Datei zu laden. – Aleks