我最近问了一个类似的问题但是由于问题已经发生了轻微的变化,我决定创建一个新问题 - 我希望这是预期的方法吗?
将我的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"]
但是,我仍然遇到同样的问题。
任何人都可以帮忙???
答案 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(标准版本),而不必担心丢失任何与生产相关的秘密。