【发布时间】: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