运行 我的 Rails 应用程序如何在 Heroku 中设置环境?

How do I set the environment in Heroku when running my Rails app?

我有一个 Rails 4.2.5 应用程序,我刚刚部署到 Heroku。我想知道如何设置我的 Rails 应用程序运行的环境。我想将环境设置为测试,但现在它正在设置为开发。根据 Heroku 的文档,我在项目的根目录下创建了一个名为“Procfile”的文件,并向其中添加了这一行

web: bundle exec puma -t 5:5 -p ${PORT:-3000} -e ${RACK_ENV:-test}

但我的应用程序仍在开发模式下部署。我知道这是因为我通过文件“./config/environment_variables.yml”设置了一些环境变量,它看起来像

development:
  GOOGLE_CLIENT_ID: 425025269574-o5ejue1pgtsjoid0f0k8r7lcksfse6hk.apps.googleusercontent.com
  GOOGLE_SECRET: 16ckoTU_RbRKkdxv7_wkZnw8
  FACEBOOK_KEY: "6574234667329742"
  FACEBOOK_SECRET: 690e7faeb05199e5392892d397b79f8e
test:
  GOOGLE_CLIENT_ID: 425025269574-gkcj8t19palgj34e5an4gj3mk68grpeg.apps.googleusercontent.com
  GOOGLE_SECRET: mokumLI9XdD8f10M6oamj7Jx
  FACEBOOK_KEY: "8877114738693318"
  FACEBOOK_SECRET: 779102b0e08e4374ca7c6986924bcf9b7
production:
  GOOGLE_CLIENT_ID: 425025269574-gkcj8t19palgj34e5an4gj3mk68grpeg.apps.googleusercontent.com
  GOOGLE_SECRET: mokumLI9XdD8f10M6oamj7Jx
  FACEBOOK_KEY: "8877114738693318"
  FACEBOOK_SECRET: 779102b0e08e4374ca7c6986924bcf9b7

但只有开发变量正在设置。

对于您的 procfile:

web: bundle exec puma -C config/puma.rb

然后在您的 puma.rb 文件中引用您的 RACK_ENV 变量

RACK_ENV 应该在您的 heroku 配置中设置为生产环境。我相信这是默认设置,但您也可以设置它。通过 运行ning heroku 配置检查。

如果没有设置运行:

 heroku config:set RACK_ENV=production

编辑:您实际上并没有尝试改变环境。或者你不应该。根据您的意见,您需要在 heroku 服务器上执行此操作:

heroku config:set GOOGLE_CLIENT_ID=425025269574-gkcj8t19palgj34e5an4gj3mk68grpeg.apps.googleusercontent.com GOOGLE_SECRET=mokumLI9XdD8f10M6oamj7Jx FACEBOOK_KEY="8877114738693318" FACEBOOK_SECRET=779102b0e08e4374ca7c6986924bcf9b7

这些是您错误标记为测试的凭据,因为您认为为 "testing" 设置的服务器是 "test environment." 这不是 Rails 的意思当它引用测试环境时。这意味着 运行 在本地进行测试的环境。只需将这些变量放在 heroku 上并使其投入生产即可。

将您的个人资料更新为以下内容:

web: bundle exec puma -C config/puma.rb

并将RAILS_ENV设置为test如下:

heroku config:set RAILS_ENV=test

如果您还没有修改您的 config/puma.rb 那么它应该具有以下内容:

environment ENV.fetch("RAILS_ENV") { "development" }

依赖于RAILS_ENV,而不是RACK_ENV