2011-08-07 56 views
5

我遇到過這種行爲,並想知道是否有其他人看過它。我有一個解決方法,所以它不是一個表演停止。Heroku RACK_ENV在Thin上說「開發」,但在Unicorn上「升級」

我在Heroku上用Cedar堆棧創建了一個新應用程序。當展示多種環境,我增加了以下配置VAR:

heroku config:add RACK_ENV=staging --app appname

我視覺驗證環境VAR設置,然後把以下的路徑,在我的簡單西納特拉例如:

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

當我我的筆記本電腦本地測試過,我收到了預期的development

當我推送到Heroku並在herokuapp.com上點擊相同的路線時,我得到development而不是staging

我通過Procfile將Web服務器從Thin切換到了Unicorn,並將更改推回到Heroku。

現在,當我擊中路線時,我得到預期的staging

有沒有其他人看到過這個?我在運行Thin的另一個項目上的解決方法是將環境關閉到New Relic應用程序名稱。 (我沒有改用獨角獸,因爲我需要New Relic來工作,目前Cedar和New Relic和Unicorn一起工作)。

回答

14

我使用heroku的示例sinatra應用程序,在sinatra和瘦雪松堆棧上有同樣的問題。 RACK_ENV拒絕將其設置爲除開發之外的任何內容。 (Heroku似乎認爲RACK_ENV已設置,因爲運行'heroku config'會顯示您設置的環境,但是在應用程序中它始終是開發的)。

竹棧上的同一個應用程序沒有問題。

編輯:我提交了門票的Heroku關於這一點,有一個非常快速的響應,其固定的bug對我來說:

QUOTE: 它看起來像有一個在我們的默認Procfile一個小bug,如果你正在使用瘦。你能用它創建一個Procfile嗎?

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

+0

這爲我修好了 - 乾杯! –

+0

男人 - 真的很高興我找到了這個。這固定我的新文物整合 – Jonathan

+0

謝謝!但令人難以置信的是,至今尚未解決。 – Felixyz

4

您也可以既您RACK_ENV和RAILS_ENV設置爲使用Heroku的寶石上演......那麼它將按預期工作。我認爲這可能是Heroku的問題。