第一次在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
。
我还能做什么呢?谢谢。
编辑:当我在命令行设置配置值时,我还接收到Heroku消息:
设置SECRET_KEY_BASE并重新启动(应用程序)..。完成
发布于 2016-12-17 15:13:39
好吧,我知道发生了什么。运行heroku run bash
并检查部署了哪些文件具有启发意义。
的确,secrets.yml
不在我本地回购的.gitignore
文件中,但似乎有人--可能是恶意黑客,也可能是捣蛋鬼--把secrets.yml
添加到了MyGlobal.gitignore (.gitignore_global
)中,因此这个文件实际上并没有被推到Heroku。
我已经从我的全局.gitignore中删除了机密文件,将开发和测试环境的秘密密钥卸载到dotenv进行管理,并且可以成功地运行我部署的应用程序。
我曾考虑过删除这个问题,但如果其他人遇到这个问题,甚至类似的问题,使用heroku run bash
可能有助于诊断Heroku上的应用程序问题。
https://stackoverflow.com/questions/41198952
复制相似问题