【发布时间】:2014-07-06 17:26:09
【问题描述】:
我最近部署了一个应用程序,但由于缺少生产 secret_key_base 而出现内部服务器错误。经过几个小时的测试,我设法用两种方法解决了这个问题:
方法一:
我使用rake secret 生成了一个新的secret_key,并在secrets.yml 中将其替换为<%= ENV["SECRET_KEY_BASE"] %>。再次部署该应用程序,这次它工作了。 但我认为这种方法是错误的。
方法二:
我用rake secret 生成了一个新的secret_key,并将它添加到environments/production.rb,就像config.secret_key_base = 'd1f4810e662acf46a33960e3aa5bd0************************,没有改变secrets.yml(默认是production: <%= ENV["SECRET_KEY_BASE"] %>)。再次部署该应用程序,它工作正常。
我的问题:
- 哪种方法最好?
- 如果第二种方法正确,为什么rails默认没有在production.rb中生成secret_key_base?
- 还有其他方法可以做到这一点吗?
【问题讨论】:
-
方法 2 仍在我的服务器中工作。但是我需要运行
bundle exec rake secret命令而不是rake secret来获取适当的密钥。
标签: ruby-on-rails deployment ruby-on-rails-4