Jak sprawdzić, czy szyny są w produkcji?


86

Kiedyś script/server -e productionuruchamiałem szyny w trybie produkcyjnym. Tak się stało i nie dostałem żadnych błędów. Jak jednak sprawdzić, czy jest w trybie produkcyjnym? Wypróbowałem nieistniejącą trasę i otrzymałem podobną stronę błędu, którą zrobiłem w trakcie opracowywania.

Pomyślałem, że jeśli w modelu produkcyjnym otrzymam stronę błędu 404, która znajduje się w moim folderze / public.

Czy to znaczy, że nie zaczął się w trybie produkcyjnym?

Dzięki za pomoc.

Odpowiedzi:


34

2 proste sposoby:

tail -f log/production.log

jeśli istnieją wpisy wypełniające ten dziennik po uruchomieniu aplikacji, jesteś w trybie produkcyjnym.

drugi sposób:

w jednym z widoków (prawdopodobnie układ jest dobry), po prostu dodaj

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

A to pokaże Ci, w jakim środowisku się znajdujesz.

edytować

Zobaczysz domyślną stronę wyjątków zamiast rzeczywistych stron błędów w dowolnym środowisku, jeśli żądanie jest uważane za „lokalne” (to jest z hosta lokalnego lub 127.0.0.1), możesz to zmienić, dodając to do swojego ApplicationController

def local_request?
  false
end

Możesz znaleźć tę metodę w dokumentacji w api


Nie mogę uruchomić drugiego sposobu, ale w moim pliku production.log znajdują się wpisy mówiące, że utworzyłem zadanie w czasie X. Dlaczego więc nie pojawia się właściwa strona błędu 404? Czy muszę podać gdzieś, aby podać właściwą stronę błędu? Dzięki za pomoc.
sent-hil

Dostałem błąd w moim przekonaniu i zamiast tego musiałem użyć podejścia @ Krishnaprasad.
Besi

5
Uwaga: RAILS_ENVjest przestarzały. Użyj Rails.envzamiast tego.
Soullivaneuh

238

Jeśli jego Rails 3.1+, Rails.env.production?powróci truepodczas produkcji.

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

2
>> Rails.envprzez rails cpojawia się, aby wyświetlić dla dowolnego trybu.
obfk

6
Rails.env.development?także dostępny.
hlcs

Wszystko ze znakiem zapytania jest dostępne. Rails.envto sznurek ozdobiony ActiveSupport::StringInquirer. api.rubyonrails.org/classes/ActiveSupport/StringInquirer.html
Sebastian vom Meer

Uwaga: działa to również w konsoli szyn. Na serwerze produkcyjnym udało mi się uruchomić: konsolę rails, potem komendę powyżej.
Ryan

28

Dla nowoczesnych wersji Railsów (3+) Rails.envzwraca środowisko jako String:

Rails.env #=> "production"

Istnieją również przydatne akcesoria dla każdego środowiska, które zwrócą Boolean:

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


3

O wiele łatwiej było po prostu zrestartować serwer rails i przeczytać drugą linię w linii poleceń:

Działające rails s -e productionwyjścia:

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

W przykładzie był Webrick, ale niektórzy nie rozumieli, jak zmiana serwerów po prostu zastępuje nazwę. Zaktualizowano dla przejrzystości.


8
Nikt rozsądny nie używa WEBrickw produkcji.
Hauleth,

Hauleth ma absolutną rację. Ma to na celu po prostu sprawdzenie, w jakim środowisku się znajdujesz podczas tworzenia.
bkunzi01

Jeśli ta odpowiedź brzmi trolling, to jest to mistrzostwo! Gratulacje!
JD.

-2

alternatywa dla wiersza poleceń

$ echo $ RAILS_ENV


To nie zadziała, jeśli serwer został uruchomiony z wbudowaną zmienną ENV. To powiedziawszy, jeśli to zostało zrobione, skrypt / alias / etc powinien znajdować się gdzieś na dysku, który będzie zawierał zmienną RAILS_ENV. Można przeszukać dysk, na przykładack
New Alexandria

to nie działa .... co jest w zmiennej i jak to się dzieje w środowisku ???
zee
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.