【问题标题】:"Missing `secret_key_base` for 'production' environment" error on HerokuHeroku 上的“‘生产’环境缺少‘secret_key_base’”错误
【发布时间】:2017-05-03 02:37:43
【问题描述】:

我在 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 并重新启动(应用程序).​​..完成

【问题讨论】:

  • 检查这个post接受的解决方案
  • @jeramaedybohol 谢谢,这是我咨询的来源之一,它指定将环境变量设置为密钥值。在 Heroku 上,这是按如下方式完成的:devcenter.heroku.com/articles/config-vars。我已经这样做了,heroku config 显示该变量已设置。我还使用了 Web UI,单击了“配置变量”下的“显示配置变量”,并看到它在那里列出。还有什么我应该尝试的吗?我还尝试在第二次生成密钥之前将RAILS_ENV 设置为生产环境,并使用这个新值更新 Heroku 配置(并再次验证)。

标签: ruby-on-rails heroku ruby-on-rails-5


【解决方案1】:

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

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

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

我曾考虑删除该问题,但会保留它以防其他人遇到此问题,或者使用heroku run bash 在诊断 Heroku 上的应用程序问题时可能会有所帮助的类似问题。

【讨论】:

  • 对你有好处@SexxLuthor
猜你喜欢
  • 1970-01-01
  • 2016-01-12
  • 2014-06-23
  • 2016-11-05
  • 2014-06-04
  • 2016-03-29
  • 2014-10-17
  • 2017-03-31
相关资源
最近更新 更多