2011-08-07 4 views
5

나는이 동작을 보았고 다른 사람이 그것을 본 적이 있는지 궁금해하고있었습니다. 임시 해결책이 아니므로 해결 방법이 있습니다.Heroku RACK_ENV가 "개발"을 유니콘에서 "스테이징"이라고 말합니다.

나는 삼나무 스택으로 Heroku에서 새로운 앱을 만들었습니다.

heroku config:add RACK_ENV=staging --app appname

나는 시각적 환경 VAR가 설정된 것을 확인

, 그때 내 간단한시나 예에서 다음과 같은 경로를 넣어 :

get '/?' do 
    ENV['RACK_ENV'] 
end 

I를 여러 환경을 설명 할 때 나는 다음과 같은 설정 var에 추가 내 랩톱에서 로컬로 테스트 한 결과 예상 한 development을 받았습니다.

내가 헤로 쿠를 밀고 herokuapp.com에서 같은 경로를 쳤을 때 나는 staging 대신 development을 얻었습니다.

웹 서버를 Procfile을 통해 Thin에서 Unicorn으로 전환하고 변경 사항을 Heroku에 밀어 넣었습니다.

이제 루트를 클릭하면 예상 staging이 표시됩니다.

다른 사람이 본 사람이 있습니까? Thin을 실행하고 있던 다른 프로젝트에 대한 해결책은 New Relic 앱 이름에서 환경을 키우는 것이 었습니다. (저는 유니콘으로 전환하지 않았습니다. 새로운 유물이 필요하기 때문에 현재는 시더와 뉴 유적과 유니콘이 함께 작동합니다.)

답변

14

나는 sinatra와 같은 문제가 있었고 heroku의 sinatra app을 사용하여 삼나무 스택에서는 얇은 것이있었습니다. RACK_ENV는 개발 이외의 어떤 것에도 설정을 거부합니다. (Heroku는 RACK_ENV가 설정되어 있다고 생각하는 것 같습니다. 'heroku config'를 실행하면 설정 한 환경이 표시되기 때문에 앱에서는 항상 개발 됨).

대나무 스택의 동일한 앱에는 문제가 없었습니다.

편집 : 나는 이것에 대해 Heroku가에 티켓을 제출하고 나를 위해 버그를 수정 정말 빠른 응답을 얻었다 :

인용구 : 당신이 사용하는 경우 우리의 기본 Procfile의 작은 버그가처럼 같습니다 얇은. 당신은 다음과 함께 Procfile을 만들 수 있습니까? 예상대로

당신은 또한 Heroku가 보석을 사용하여 준비에 모두 당신의 RACK_ENV 및 RAILS_ENV을 설정할 수 있습니다

web: bundle exec thin start -R config.ru -e $RACK_ENV -p $PORT

+0

나를 위해이 문제가 해결되었습니다 - 건배! –

+0

남자 - 정말 기뻤습니다. 이건 내 새로운 유물 통합 – Jonathan

+0

고마워! 그러나 이것은 지금까지 해결되지 않은 놀라운 것입니다. – Felixyz

4

는 ... 그것은 작동합니다. 나는 그것이 Heroku에 문제가 있을지도 모른다라고 생각한다.