2011-08-07 11 views
5

Natknąłem się na to zachowanie i zastanawiałem się, czy ktoś jeszcze to widział. Mam obejście, więc nie jest to przystanek na pokaz.Heroku RACK_ENV mówi "rozwój" na Thin, ale "inscenizacja" na Unicorn

Stworzyłem nową aplikację na Heroku ze stosem cedrów. Podczas pokazu wielu środowisk dodałem następujące config var:

heroku config:add RACK_ENV=staging --app appname

I wizualnie sprawdzić, czy zmienna środowisko został ustawiony, a następnie umieścić następującą trasą w moim prostym przykładzie Sinatra:

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

kiedy przetestowany lokalnie na moim laptopie, otrzymałem oczekiwany development.

Kiedy popchnąłem do Heroku i uderzyłem w tę samą trasę na herokuapp.com, otrzymałem development zamiast staging.

Przełączyłem serwer WWW z Thin na Unicorn poprzez plik Procfile i wróciłem z powrotem do Heroku.

Teraz, gdy docieram do trasy, otrzymuję oczekiwany staging.

Czy ktoś jeszcze to widział? Moje obejście innego projektu, w którym pracowałem w Thin, miało na celu odseparowanie środowiska od nazwy aplikacji New Relic. (Nie przestawiłem się na Unicorn, ponieważ potrzebuję New Relic do pracy, a obecnie współpracują Cedar and New Relic i Unicorn).

Odpowiedz

14

Miałem ten sam problem z sinatrą i cienką na stosie cedru, używając przykładowej aplikacji sinatra Heroku. RACK_ENV nie chce być ustawiony na coś innego niż programowanie. (Heroku wydaje się myśleć, że ustawiono RACK_ENV, ponieważ uruchomienie 'heroku config' wyświetla ustawione przez ciebie środowisko, jednak w aplikacji zawsze rozwija się).

Ta sama aplikacja na bambusowym stosie nie miała żadnych problemów.

EDIT: I złożony bilet do Heroku o tym i dostaliśmy naprawdę szybką reakcję, która Naprawiono błąd dla mnie:

Cytat: To wygląda jak jest tam mały błąd w naszym domyślnie Procfile jeśli używasz cienki. Czy możesz utworzyć plik Procfile zawierający następujące elementy?

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

+0

Naprawiłem to dla mnie - okrzyki! –

+0

Mężczyzna - naprawdę się cieszę, że to znalazłem. To naprawiło moją nową integrację z reliktem – Jonathan

+0

Dzięki! Ale niesamowite, że nie zostało to już naprawione. – Felixyz

4

Można również ustawić zarówno swoją RACK_ENV i RAILS_ENV do postoju przy użyciu gem Heroku ... to działa zgodnie z oczekiwaniami. Myślę, że to może być problem z Heroku.