Rails ENV变量

时间:2013-09-01 10:46:21

标签: ruby-on-rails heroku

我最近问了一个类似的问题但是由于问题已经发生了轻微的变化,我决定创建一个新问题 - 我希望这是预期的方法吗?

将我的Rails 4应用程序推送到Heroku后,我不断收到内部服务器错误页面,错误是:

您必须在应用的配置中设置config.secret_key_base

这种情况正在发生,因为我的.gitignore文件故意包含 config / initializers / secret_token.rb

我已安装了Figaro gem,因此我可以将secret_key_base设置为环境变量以增加安全性。我已经检查过Heroku,密钥设置正确。

我对secret_token.rb的代码如下:

MyApp::Application.config.secret_key_base = ENV["SECRET_KEY_BASE"]

但是,我仍然遇到同样的问题。

任何人都可以帮忙???

3 个答案:

答案 0 :(得分:10)

我做了一些类似于你工作的东西,但没有使用费加罗。我的基础是this blog post

总之,这就是我所做的:

1)从你的.gitignore中删除config / initializers / secret_token.rb

2)将此代码用于您的secret_token.rb:

MyApp::Application.config.secret_token = if Rails.env.development? or Rails.env.test?
  ('x' * 30) # meets minimum requirement of 30 chars long
else
  ENV['SECRET_TOKEN']
end

3)提交并重新推送

4)将Heroku env变量设置为:

heroku config:set SECRET_TOKEN=12345.....

在配置设置后Heroku重新启动后立即工作。

答案 1 :(得分:5)

您可以在heroku上设置环境变量: https://devcenter.heroku.com/articles/config-vars

您需要使用以下命令为heroku设置SECRET_KEY_BASE环境变量:

heroku config:set SECRET_KEY_BASE=value

答案 2 :(得分:1)

这可能会帮助人们使用Rails +4.1:

"在部署Rails 4.1+应用程序时,Heroku将指定SECRET_KEY_BASE 您的应用默认为。" (https://blog.heroku.com/container_ready_rails_5

换句话说,你不必做任何事情。您可以从.gitignore文件中省略secrets.yml(标准版本),而不必担心丢失任何与生产相关的秘密。