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

时间:2016-03-07 14:36:50

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

我有一个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

但只有开发变量才会被设置。

2 个答案:

答案 0 :(得分:0)

for procfile:

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

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

应该在heroku配置中将RACK_ENV设置为production。我相信它是默认的,但你也可以设置它。通过运行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

这些是您错误地标记为测试的凭据,因为您正在考虑为您设置的服务器"测试"作为一个测试环境。"当Rails引用测试环境时,这不是Rails的意思。它表示在本地运行测试的环境。只需将这些变量放在heroku上并允许它生成。

答案 1 :(得分:0)

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

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