10

Auf meiner Entwicklung Maschine:Rails-Konsole Standardumgebung

$ bundle exec rails console 
Loading development environment (Rails 3.2.3) 
1.9.3p194 :001 > Rails.env 
=> "development" 

Das erwartet wird. So weit, ist es gut.

Doch auf meinem Produktions-Server (auf die ich mit Capistrano eingesetzt), bekomme ich genau das gleiche Ergebnis:

$ bundle exec rails console 
Loading development environment (Rails 3.2.3) 
1.9.3p194 :001 > Rails.env 
=> "development" 

Auf jeder Maschine, kann ich stattdessen tun:

$ bundle exec rails console production 
Loading development environment (Rails 3.2.3) 
1.9.3p194 :001 > Rails.env 
=> "production" 

Meine Frage ist: auf dem Produktionsserver, sollte nicht bundle exec rails console die Produktionsumgebung standardmäßig anstelle der Entwicklungsumgebung laden? Und wenn nicht, warum nicht?

+1

Es ist normales Verhalten. Ihre App weiß einfach nicht, wo sie in der Produktion oder auf Ihrem lokalen Server ist. Das ist alles :) – alexkv

+0

Danke. Das lässt mich nur wundern * warum * es ist normales Verhalten; aber ich denke ich kann es erraten. – sampablokuper

+0

Danke. Dies beantwortete meine Frage, wie man die Rails-Konsole als Produktion ausführt. Es folgt nicht dem gleichen Muster wie Rails Server -e Produktion. – erroric

Antwort

16

Die ausführbare Rails-Datei kann nicht wissen, welche Umgebung auf welcher Maschine ausgeführt werden soll.

können Sie export RAILS_ENV=production in Ihre ~/.bashrc oder ~/.bash_profile Datei des Benutzers setzen, mit dem Sie die Konsole starten möchten.

5

RAILS_ENV ist eine Variable wie jede andere, die immer für die Entwicklung

, wenn Sie mögen, können jederzeit öffnen ‚~/.bash_profile‘ auf dem Produktionsserver ausfällt und fügen Sie diese:

alias sc="bundle exec rails console production" 

Führen Sie dann source ~/.bash_profile aus, um diese Datei für Ihre Terminalsitzung neu zu laden, und rufen Sie einfach sc auf, um die Konsole zu laden.