레일이 생산 중인지 어떻게 알 수 있습니까?


86

내가 사용하는 script/server -e production생산 모드에 레일을 시작합니다. 그것은했고 나는 오류가 없었습니다. 그러나 프로덕션 모드인지 어떻게 알 수 있습니까? 존재하지 않는 경로를 시도했는데 개발 중에했던 비슷한 오류 페이지가 나타납니다.

프로덕션 모델에서 내 / public 폴더에 404 오류 페이지가 표시되는 것으로 생각했습니다.

프로덕션 모드에서 시작되지 않았 음을 의미합니까?

당신의 도움을 주셔서 감사합니다.

답변:


34

2 가지 쉬운 방법 :

tail -f log/production.log

앱을 실행 한 후 해당 로그를 채우는 항목이 있으면 프로덕션 모드에있는 것입니다.

두 번째 방법 :

보기 중 하나에서 (아마도 레이아웃이 좋을 것입니다)

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

그리고 그것은 당신이 실행하고있는 환경을 보여줄 것입니다.

편집하다

요청이 "로컬"(즉, localhost 또는 127.0.0.1에서)로 간주되는 경우 모든 환경에서 실제 오류 페이지 대신 기본 예외 페이지가 표시됩니다. ApplicationController

def local_request?
  false
end

이 방법은 api 의 문서에서 찾을 수 있습니다.


두 번째 방법으로 작업 할 수는 없지만 production.log에 X 시간에 작업을 만들었다는 항목이 있습니다. 그렇다면 올바른 404 오류 페이지가 표시되지 않는 이유는 무엇입니까? 올바른 오류 페이지를 제공 할 위치를 지정해야합니까? 도와 주셔서 감사합니다.
sent-hil

내 견해에 오류가있어 대신 @Krishnaprasad의 접근 방식을 사용해야했습니다.
Besi

5
참고하시기 바랍니다 RAILS_ENV되지 않습니다. Rails.env대신 사용하십시오 .
Soullivaneuh

238

Rails 3.1 이상인 경우 프로덕션 단계에서 Rails.env.production?반환 true됩니다.

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

2
>> Rails.envvia rails c는 모든 모드에 대해 표시됩니다.
obfk

6
Rails.env.development?도 가능.
hlcs 2014

물음표가있는 모든 것을 사용할 수 있습니다. Rails.env로 장식 된 문자열입니다 ActiveSupport::StringInquirer. api.rubyonrails.org/classes/ActiveSupport/StringInquirer.html
세바스찬 VOM 미어

참고로 이것은 레일 콘솔에서도 작동합니다. 프로덕션 서버에서 레일스 콘솔을 실행 한 다음 위의 명령을 실행할 수있었습니다.
라이언

28

최신 Rails 버전 (3+)의 Rails.env경우 환경을 다음으로 반환합니다 String.

Rails.env #=> "production"

다음을 반환하는 각 환경에 대한 유용한 접근 자도 있습니다 Boolean.

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


3

Rails 서버를 다시 시작하고 명령 줄에서 두 번째 줄을 읽는 것이 훨씬 쉽다는 것을 알았습니다.

rails s -e production출력 실행 :

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

예에서 Webrick이 있었지만 일부 사람들은 서버 변경이 이름을 대체하는 방법을 이해하지 못했습니다. 명확성을 위해 업데이트되었습니다.


8
제정신이 WEBrick프로덕션에서 사용하지 않습니다 .
Hauleth 2014 년

Hauleth는 절대적으로 정확합니다. 이것은 단순히 개발하는 동안 어떤 환경에 있는지 테스트하기위한 것입니다.
bkunzi01 2015 년

이 대답이 트롤링이라면 그것은 숙달입니다! 축하합니다!
JD.

-2

명령 줄 대안

$ echo $ RAILS_ENV


서버가 인라인 ENV var로 시작된 경우 작동하지 않습니다. 즉, 이것이 완료되면 스크립트 / 별명 등이 디스크상의 어딘가에 있어야하며 RAILS_ENV var를 포함합니다. 다음과 같이 디스크를 검색 할 수 있습니다.ack
New Alexandria

이것은 작동하지 않습니다 .... 변수의 내용과 환경을 얻는 방법 ???
zee 2015
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.