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.

sent-hil
źródło

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

Dan McNevin
źródło
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  
Krishnaprasad Varma
źródło
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  
Dogweather
źródło
8

Od rodzaju linii poleceń rails console, a następnie Rails.env.

Karolis Ramanauskas
źródło
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.

bkunzi01
źródło
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

vireshas
źródło
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