在Heroku上第一次部署我的应用程序时收到错误“发生了未处理的低级错误”,并且heroku日志显示:
Missing
secret_key_base
for ‘production’ environment, set this value
inconfig/secrets.yml
1)默认的secrets.yml指定secret_key_base:<%= ENV [“SECRET_KEY_BASE”]%>用于生产
2)我使用rails secret生成了一个秘密,然后通过heroku配置将其添加到我的应用程序的Heroku配置中:set SECRET_KEY_BASE ='(key)’
3)heroku配置显示为SECRET_KEY_BASE设置的此值
4)也许最重要的是,基于有关此错误的旧问题,.gitignore不包含secrets.yml – 它是为Rails 5应用程序生成的默认.gitignore.因此,secrets.yml应该已经与我的app一起部署,它指定通过生产环境中的环境变量加载秘密.
5)我还运行heroku ps:restart,以防应用程序需要一些额外的帮助才能使环境变量设置生效
我读过较旧的帖子,但过去的答案似乎是确保secretts.yml不包含在.gitignore中,但如上所述,这不适用于默认的Rails 5 .gitignore.
我还能尝试什么?谢谢.
编辑:当我在命令行设置配置值时,我也收到Heroku消息:
Setting SECRET_KEY_BASE and restarting (the app)… done
最佳答案 好的,我看到发生了什么.运行heroku运行bash并检查部署了哪些文件具有启发性.
确实,secrets.yml不在我的本地仓库的.gitignore文件中,但似乎有人 – 可能是恶意黑客,可能是小鬼 – 已经将secretts.yml添加到我的全球.gitignore(.gitignore_global),以及所以这个文件实际上没有被推送到Heroku.
我从我的全局.gitignore中删除了秘密文件,将开发和测试环境密钥卸载到dotenv进行管理,并且可以成功运行我部署的应用程序.
我想删除这个问题,但是如果其他人遇到这个问题就会留下它,或者甚至是类似的一个使用Heroku运行bash的人在诊断Heroku上的应用程序问题时可能会有所帮助.