"Missing `secret_key_base` for 'production' environment" Heroku 上的错误

"Missing `secret_key_base` for 'production' environment" error on Heroku

我在 Heroku 上首次部署我的应用程序时收到错误 "An unhandled lowlevel error occurred",heroku logs 显示:

Missing secret_key_base for 'production' environment, set this value in 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--这是默认生成的 .gitignore对于 Rails 5 个应用程序。因此,secrets.yml 应该已经与我的应用程序一起部署,它指定通过生产环境中的环境变量加载秘密。

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

我阅读了较早的帖子,但过去的答案似乎确保 secrets.yml 未包含在 .gitignore 中,但如前所述,这不适用于默认 Rails 5 .gitignore.

我还能尝试什么?谢谢

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

Setting SECRET_KEY_BASE and restarting (the app)... done

好的,我知道发生了什么。 运行 heroku run bash 检查部署了哪些文件很有启发性。

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

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

我想过删除这个问题,但会留下它以防其他人 运行 遇到这个问题,或者甚至是类似的问题,其中使用 heroku run bash 可能有助于诊断 Heroku 上的应用程序问题.