Heroku RACK_ENV在Thin上说"开发",但在Unicorn上"演出"

wjk*_*los 5 ruby heroku thin staging unicorn

我遇到了这种行为,并想知道是否有其他人看过它.我有一个解决方法,所以它不是一个显示阻止.

我在Heroku上用Cedar堆栈创建了一个新的应用程序.在演示多个环境时,我添加了以下config var:

heroku config:add RACK_ENV=staging --app appname

我在视觉上验证了环境var的设置,然后在我的简单Sinatra示例中放入以下路由:

get '/?' do
  ENV['RACK_ENV']
end
Run Code Online (Sandbox Code Playgroud)

当我在笔记本电脑上进行本地测试时,我收到了预期development.

当我推到Heroku并在herokuapp.com上点击相同的路线时,我得到了development而不是staging.

我通过Procfile将Web服务器从Thin切换到Unicorn,并将更改推回到Heroku.

现在,当我到达路线时,我得到了预期staging.

有没有人见过这个?我在另一个运行Thin的项目上的解决方法是关闭New Relic应用程序名称的环境.(我没有切换到Unicorn,因为我需要New Relic来工作,目前Cedar和New Relic和Unicorn一起工作).

Mit*_*tch 14

我使用heroku的示例sinatra app在雪松堆上遇到了与sinatra相同的问题.RACK_ENV拒绝设置除了开发之外的任何东西.(Heroku似乎认为它已经设置了RACK_ENV,因为运行'heroku config'会显示你设置的环境,但是在应用程序中它始终是开发的).

竹堆上的相同应用程序没有问题.

编辑:我向heroku提交了一张关于这个的门票,得到了一个非常快速的回复,为我修复了这个错误:

引用:如果您使用瘦文件,我们的默认Procfile中似乎有一个小错误.你能创建一个包含以下内容的Procfile吗?

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