我收到了错误"在第一次在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)'
3)heroku config
显示了SECRET_KEY_BASE
4)也许最重要的是,基于有关此错误的较旧问题, .gitignore
div not 包括 secrets.yml
-是为Rails 5 App生成的默认值.gitignore。因此,secrets.yml
应该与我的应用一起部署,该应用程序指定通过生产环境中的环境变量加载秘密。
5)我还运行heroku ps:restart
,以防该应用程序为环境变量设置需要一些额外的帮助才能生效
我阅读了较旧的帖子,但是过去的答案似乎是确保secrets.yml
不包括在.gitignore
中,但是如前所述,这不适用于默认导轨5 .gitignore
。
我还能尝试什么?thx。
编辑:当我在命令行中设置配置值时,我还会收到Heroku消息:
设置secret_key_base并重新启动(应用程序)...完成
好吧,我知道发生了什么。运行heroku run bash
并检查部署了哪些文件一直在启发。
的确,secrets.yml
不在我本地仓库中的.gitignore
文件中,但是似乎某人 - 可能是恶意黑客,可能是Gremlins-可能是Gremlins- Had将secrets.yml
添加到我的Global .gitignore(.gitignore_global
),因此该文件实际上不是被推到Heroku的。
我已经从我的全局.gitignore中删除了秘密文件,将开发和测试环境秘密键转移到dotenv进行管理,并可以成功运行我已部署的应用程序。
我考虑过删除这个问题,但如果其他问题遇到此问题,或者在诊断Heroku上使用heroku run bash
的问题可能会有所帮助。