Wie kann man feststellen, ob Schienen in Produktion sind?


84

Ich habe script/server -e productionSchienen im Produktionsmodus gestartet. Es tat und ich bekam keine Fehler. Wie kann ich jedoch feststellen, ob es sich im Produktionsmodus befindet? Ich habe eine nicht vorhandene Route ausprobiert und eine ähnliche Fehlerseite erhalten, die ich in der Entwicklung erstellt habe.

Ich dachte, wenn ich unter dem Produktionsmodell die 404-Fehlerseite bekomme, die sich in meinem / public-Ordner befindet.

Bedeutet das, dass es nicht im Produktionsmodus gestartet wurde?

Danke für Ihre Hilfe.

Antworten:


33

2 einfache Möglichkeiten:

tail -f log/production.log

Wenn in diesem Protokoll Einträge vorhanden sind, nachdem Sie die App aufgerufen haben, befinden Sie sich im Produktionsmodus.

zweiter Weg:

Fügen Sie in einer Ihrer Ansichten (wahrscheinlich ist das Layout gut) einfach hinzu

<%= "Environment: #{RAILS_ENV}" %>

Und das zeigt Ihnen, in welcher Umgebung Sie arbeiten.

bearbeiten

Wenn die Anforderung als "lokal" (dh von localhost oder 127.0.0.1) betrachtet wird, wird in jeder Umgebung die Standardausnahmeseite anstelle der eigentlichen Fehlerseiten angezeigt. Sie können dies überschreiben, indem Sie diese zu Ihrer hinzufügen ApplicationController

def local_request?
  false
end

Sie finden diese Methode in den Dokumenten in der API


Ich kann den zweiten Weg zur Arbeit nicht finden, aber es gibt Einträge in meinem Production.log, die besagen, dass ich zur X-Zeit eine Aufgabe erstellt habe. Warum erhalte ich nicht die richtige 404-Fehlerseite? Muss ich irgendwo angeben, um die richtige Fehlerseite bereitzustellen? Danke für die Hilfe.
Sent-Hil

Ich habe einen Fehler in meiner Ansicht erhalten und musste stattdessen den Ansatz von @ Krishnaprasad verwenden.
Besi

5
Bitte beachten Sie, dass RAILS_ENVveraltet ist. Verwenden Sie Rails.envstattdessen.
Soullivaneuh

236

Wenn seine Rails 3.1+, Rails.env.production?wird truein der Produktion zurückkehren.

Rails.env.production?  #=> true  
Rails.env.staging?     #=> false
Rails.env.development? #=> false  

2
>> Rails.envvia rails cwird für jeden Modus angezeigt.
obfk

6
Rails.env.development?auch verfügbar.
hlcs

Alles mit einem Fragezeichen ist verfügbar. Rails.envist eine Schnur verziert mit ActiveSupport::StringInquirer. api.rubyonrails.org/classes/ActiveSupport/StringInquirer.html
Sebastian vom Meer

Nur als Hinweis, dies funktioniert auch in der Rails-Konsole. Auf einem Produktionsserver konnte ich Folgendes ausführen: Rails Console, dann den obigen Befehl.
Ryan

28

Gibt bei modernen Rails-Versionen (3+) Rails.envdie Umgebung wie folgt zurück String:

Rails.env #=> "production"

Es gibt auch hilfreiche Accessoren für jede Umgebung, die Folgendes zurückgeben Boolean:

Rails.env.production?  #=> true  
Rails.env.staging?     #=> false
Rails.env.development? #=> false  


3

Ich fand es viel einfacher, den Rails-Server neu zu starten und die zweite Zeile in der Befehlszeile zu lesen:

Laufende rails s -e productionAusgaben:

=> Booting Puma
=> Rails 4.2.4 application starting in `production` on http://localhost:3000

Hatte Webrick im Beispiel, aber einige Leute verstanden nicht, wie das Ändern von Servern nur den Namen ersetzen würde. Aus Gründen der Übersichtlichkeit aktualisiert.


8
Niemand, der gesund ist, verwendet WEBrickin der Produktion.
Hauleth

Hauleth ist absolut richtig. Dies dient lediglich dazu, zu testen, in welcher Umgebung Sie sich während der Entwicklung befinden.
bkunzi01

Wenn diese Antwort trollt, ist es Meisterschaft! Herzliche Glückwünsche!
JD.

-2

Befehlszeilenalternative

$ echo $ RAILS_ENV


Dies funktioniert nicht, wenn der Server mit einer Inline-ENV-Variable gestartet wurde. Das heißt, wenn dies getan wurde, sollte ein Skript / Alias ​​/ etc irgendwo auf der Festplatte gespeichert sein, das die Variable RAILS_ENV enthält. Man kann die Festplatte danach durchsuchen, beispielsweise mitack
New Alexandria

das funktioniert nicht .... was ist in der Variablen und wie bekommt es die Umgebung ???
Zee
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.