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


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.