生产环境缺少 secret_key_base - 在 Heroku 上托管 Rails 4.1.4 应用程序

3
我创建了一个rails 4.1.4应用程序,我正在尝试在heroku上托管它,但是我遇到了以下错误 - "Missing secret_key_base for production environment, set this value in config/secrets.yml"。我的secrets.yml文件在production下有 "secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>"。
我运行了rake secret并将结果保存在环境变量SECRET_KEY_BASE中。当我登录我的heroku应用程序时,我可以看到在设置中单击时存储的该值存储在Config Variables中。其他解决方案建议我将config/secrets.yml添加到git并重新部署到heroku - 然而我不想添加secrets.yml或任何yml文件到版本控制。
有什么想法吗?谢谢!

你尝试过执行 heroku restart 命令吗? - Richard Peck
刚刚试过了,还是出现同样的错误。 - user2635088
嗯,好的 - 你有其他依赖项在运行吗?这可能会导致问题。 - Richard Peck
抱歉,我不确定那是什么意思 - 我在 Heroku 上有以下配置变量 - DATABASE_URL、FACEBOOK_KEY、FACEBOOK_SECRET、HEROKU_POSTGRESQL_COBALT_URL、LANG、RACK_ENV、RAILS_ENV、SECRET_KEY_BASE。 - user2635088
抱歉,我问错了问题!对不起 - 我是在为另一个问题提供评论。 - Richard Peck
1
如果secrets.yml不在您的源代码中,也没有部署到Heroku上,那么您的应用程序将不知道要查找环境变量。整个重点是,您可以安全地添加此文件,因为它仅具有dev和test的值。 - bobomoreno
1个回答

1
当你在Heroku上部署时,你是通过Git进行部署的。任何未包含在git存储库中的文件都不会被推送到服务器上。因此,现在在secrets.yml中有什么并不重要 - 它不会被部署。
提交配置文件或YAML文件没有问题 - 问题在于提交秘密信息。如果你提交API密钥和密码,那么你必须信任所有有权访问你的源代码的人。如果你的代码在Github上(因为你不相信地球上的每个人都有电脑),那是不可能的,但在一个小公司中这仍然是一个坏主意。如果某人离开、丢失了笔记本电脑或感染了恶意软件,如果他们没有生产凭据,你就会少很多压力。
你已经在避免这种情况方面做得很对。使用环境变量来配置你的应用程序将这些秘密信息从你的存储库中分离出来,即使这些配置文件被提交。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接