【问题标题】:How do I set the environment in Heroku when running my Rails app?运行 Rails 应用程序时如何在 Heroku 中设置环境?
【发布时间】:2016-06-21 03:53:00
【问题描述】:

我有一个刚刚部署到 Heroku 的 Rails 4.2.5 应用程序。我想知道如何设置我的 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

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

【问题讨论】:

  • 您将需要轮换您刚刚发布到互联网上的所有应用程序机密。
  • 使用它们!来吧,关闭应用程序,我敢!

标签: ruby-on-rails heroku environment-variables environment


【解决方案1】:

对于您的 procfile:

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

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

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

如果没有设置运行:

 heroku config:set RACK_ENV=production

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

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

这些是您错误地标记为测试的凭据,因为您将设置用于“测试”的服务器视为“测试环境”。这不是 Rails 引用测试环境时的意思。这意味着在本地运行测试的环境。只需将这些变量放在 heroku 上并让它生产。

【讨论】:

  • 你的 puma.rb 文件的内容是什么?
  • 嗨,我添加了你在帖子中指定的 puma.rb 文件并运行了“heroku config:set RACK_ENV=test”,但是我仍然使用生产设置而不是测试我想要的设置。
  • 我误解了你的要求......是的,生产不会成为测试环境。测试环境仅用于运行您的测试。在部署之前,您在本地执行该操作。部署时,您就处于生产状态。
  • 您的问题使您的应用程序看起来像是在使用开发而不是生产。
  • 我应该更笼统地表达我的问题——有什么方法可以将 heroku 环境从生产环境更改为其他环境?如果有,怎么做?
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2012-10-09
    • 2021-06-01
    • 2012-08-13
    • 1970-01-01
    • 2020-07-02
    • 2014-11-18
    • 1970-01-01
    • 1970-01-01
    • 2013-01-18
    相关资源
    最近更新 更多