在Heroku上出现了“生产环境缺少'secret_key_base'”的错误。

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

在'production'环境中缺少secret_key_base,请在config / secrets.yml中设置此值

1)默认的secrets.ymlsecret_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并重新启动(应用程序)...完成


1
查看此帖子上的已接受解决方案。 - user6427415
@jeramaedybohol 谢谢,这是我参考的其中一个来源,它指定了将环境变量设置为密钥值。在Heroku上,可以按照以下方式完成:https://devcenter.heroku.com/articles/config-vars。我已经做到了这一点,并且 heroku config 显示此变量已设置。我还使用Web UI,在“Config Variables”下单击“Reveal Config Vars”,并在那里列出它。还有其他什么我应该尝试吗?我还尝试在生成第二个密钥之前将 RAILS_ENV 设置为生产环境,并使用此新值更新Heroku配置(并再次验证)。 - SexxLuthor
1个回答

2

好的,我明白发生了什么。运行heroku run bash并检查已部署的文件非常有启发性。

确实,我的本地repo中的secrets.yml没有在.gitignore文件中,但似乎某人--可能是恶意黑客,可能是小精灵--已将secrets.yml添加到我的全局.gitignore (.gitignore_global)中,因此这个文件实际上没有被推送到Heroku。

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

我考虑过删除这个问题,但为了让其他人遇到这个问题时能够参考,或者遇到类似的问题时使用heroku run bash有所帮助,我决定保留这个问题。


祝你好运 @SexxLuthor - user6427415

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接