Rails 5部署Heroku报production环境缺失secret_key_base错误如何解决
问题结论
本地MySQL版本冲突和当前Heroku部署报错完全无关,Heroku运行环境与本地开发环境相互独立,本地启动的MySQL服务不会影响Heroku上的应用运行。
报错的真实可能原因及解决方法
- 可能性1:修改后的
config/secrets.yml未提交推送到Heroku
你本地的secrets.yml已经配置了生产环境从环境变量读取SECRET_KEY_BASE,但如果没有将改动提交到Git并推送到Heroku,Heroku上运行的仍是旧配置文件,无法读取到对应规则。
解决方法:执行git status检查secrets.yml是否有未提交的改动,提交后执行git push heroku 你的分支名重新部署即可。 - 可能性2:
config/secrets.yml被纳入.gitignore规则
部分项目会默认将secrets.yml加入Git忽略列表,避免敏感信息提交到代码仓库,这会导致推送到Heroku的代码包中没有该配置文件,Rails无法读取生产环境的secret_key_base配置就会报错。
解决方法:查看项目根目录的.gitignore文件,移除/config/secrets.yml对应的忽略规则,提交改动后重新推送到Heroku。 - 可能性3:设置环境变量后未重启Heroku应用实例
用heroku config:set配置环境变量后,需要重启Heroku的应用dyno才能加载新的环境变量,运行中的应用仍会读取旧的环境变量值。
解决方法:执行heroku restart重启应用,等待重启完成后再访问测试。
内容的提问来源于stack exchange,提问作者Marchan4
相关产品推荐
相关产品推荐

