缺少生产环境的secret_key_base - 在heroku上托管rails 4.1.4 app

时间:2014-08-24 11:23:45

标签: ruby-on-rails heroku ruby-on-rails-4

我创建了一个rails 4.1.4应用程序,我试图在heroku上托管,但是我收到以下错误 -

secret_key_base环境中缺少production ,在config/secrets.yml中设置此值

我的secrets.yml文件看起来生成secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>

我运行了rake secret并将结果保存在环境变量SECRET_KEY_BASE中。当我在heroku上登录我的应用程序时,当我点击设置时,我可以看到存储在配置变量中的值。

其他解决方案建议我将config / secrets.yml添加到git并重新部署到heroku - 但是我不希望将secretts.yml或任何yml文件添加到版本控制中。

有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

当您部署到Heroku时,您将通过Git进行部署。任何未包含在您的git存储库中的文件都不会被推送到您的服务器。因此,现在secrets.yml中的内容并不重要 - 它没有被部署。

提交配置文件或YAML文件没有任何问题 - 问题在于提交机密。如果您提交了API密钥和密码,那么您必须相信每个有权访问您的源代码的人。如果你的代码在Github上是不可能的(因为你不相信地球上的每个人都有一台电脑),但在一家小公司里仍然是一个坏主意。如果有人离开,丢失他们的笔记本电脑,或者如果他们的机器上没有生产凭证就会感染恶意软件,那么你的压力会小得多。

你已经做了正确的事情来避免这种情况。使用环境变量来配置应用程序会将这些机密保留在存储库之外,即使这些配置文件已提交也是如此。