“缺少'secret_key_base`为'生产'环境”Heroku上的错误

时间:2016-12-17 13:15:44

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

我在Heroku上第一次部署我的应用时收到错误“发生了未处理的低级错误”,heroku logs显示:

  

为'生产'环境缺少secret_key_base,请设置此值   在config/secrets.yml

1)默认secrets.yml指定生产的secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>

2)我使用rails secret生成了一个秘密,然后通过heroku config:set SECRET_KEY_BASE='(the key)'

将其添加到我的应用程序的Heroku配置中

3)heroku config显示为SECRET_KEY_BASE

设置的此值

4)也许最重要的是,基于有关此错误的旧问题,.gitignore 包含secrets.yml - 这是为Rails 5应用生成的默认.gitignore 。因此,应该在我的应用程序中部署secrets.yml,该应用程序指定通过生产环境中的环境变量加载秘密。

5)我还运行heroku ps:restart,以防应用程序需要一些额外的帮助才能使环境变量设置生效

我读过较旧的帖子,但过去的答案似乎是确保secrets.yml未包含.gitignore,但如上所述,这不适用于默认的Rails 5 .gitignore

我还能尝试什么? THX。

编辑:当我在命令行设置配置值时,我也收到了Heroku消息:

  

设置SECRET_KEY_BASE并重启(应用程序).​​..完成

1 个答案:

答案 0 :(得分:2)

好的,我看到发生了什么。运行heroku run bash并检查部署了哪些文件具有启发性。

secrets.yml确实不在我本地仓库的.gitignore文件中,但似乎某人 - 可能是恶意黑客,可能是小鬼 - 已将secrets.yml添加到我的全局.gitignore(.gitignore_global),因此该文件实际上而非被推送到Heroku。

我已从我的全局.gitignore中删除了秘密文件,将开发和测试环境密钥卸载到dotenv进行管理,并且可以成功运行我已部署的应用程序。

我考虑过删除这个问题,但是如果其他人遇到这个问题,我会留下这个问题,甚至是在使用Heroku上的应用程序诊断问题时使用heroku run bash可能会有帮助的类似问题。