ruby - Heroku RACK_ENV 在 Thin 上显示 "development",但在 Unicorn 上显示 "staging"

标签 ruby heroku thin staging unicorn

我遇到了这种行为,想知道是否有其他人看到过它。我有一个解决方法,因此它不会成为阻碍。

我使用 Cedar 堆栈在 Heroku 上创建了一个新应用程序。在演示多个环境时,我添加了以下配置变量:

heroku config:add RACK_ENV=staging --app appname

我目视验证环境变量已设置,然后将以下路由放入我的简单 Sinatra 示例中:

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

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

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

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

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

有没有人看过这个?我在另一个运行 Thin 的项目上的解决方法是将环境从 New Relic 应用程序名称中删除。 (我没有切换到 Unicorn,因为我需要 New Relic 才能工作,目前 Cedar 和 New Relic 以及 Unicorn 一起工作)。

最佳答案

我在使用 heroku 的示例 sinatra 应用程序时遇到了与 sinatra 和 thin on the cedar stack 相同的问题。 RACK_ENV 拒绝设置为开发以外的任何设置。 (Heroku 似乎认为它的 RACK_ENV 已设置,因为运行“heroku config”会显示您设置的环境,但在应用程序中它始终是开发环境)。

bamboo stack上同样的app没有问题。

编辑:我就此向 heroku 提交了一张票,并得到了非常快速的回复,为我修复了错误:

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

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

关于ruby - Heroku RACK_ENV 在 Thin 上显示 "development",但在 Unicorn 上显示 "staging",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6975667/

相关文章:

ruby-on-rails - 工头启动错误(server.rb :33,缺少参数...)

ruby-on-rails - 如何使用 thin 和 ssl 获得干净的输出?

如果值超出范围,Ruby 优雅的返回最小值/最大值的方法

ruby - 更新哈希中的值

ruby - 在可变数量的单词上拆分字符串

javascript - Heroku 未使用 React 应用程序更新配置变量

heroku - heroku 上的 Hapi 服务器无法绑定(bind)端口

ruby-on-rails - 服务器已经在运行。检查 C :/Rails/tmp/pids/server. pid

ruby-on-rails - 使用 Heroku 设置 Paperclip Amazon S3

ruby-on-rails - 带有 Thin 和 Apache 的 Rails 3.2 Assets 管道,未找到 Assets