You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Heroku中更新RAILS_MASTER_KEY以适配production.yml.enc?

解决Heroku更新RAILS_MASTER_KEY的鸡生蛋困境

方案一:新增生产环境专属密钥变量(推荐)

Rails 6+支持多环境credentials,可通过独立变量避免冲突:

  • 在Heroku终端执行:heroku config:set RAILS_PRODUCTION_KEY=你的production.key文件内容
  • 代码中生产环境的密钥调用改为Rails.application.credentials.production[:密钥名],确保只加载production.yml.enc的内容
  • 原有RAILS_MASTER_KEY可保留,用于解密credentials.yml.enc(仅开发环境使用)
  • 直接推送代码部署,此时生产环境会自动用RAILS_PRODUCTION_KEY解密production.yml.enc,无需修改原有密钥,避免解密冲突

方案二:彻底切换到生产环境credentials

如果不需要保留旧的credentials.yml.enc:

  1. 本地操作:将credentials.yml.enc中的生产环境密钥全部迁移到production.yml.enc,然后清空或删除credentials.yml.enc
  2. 设置新密钥:执行heroku config:set RAILS_MASTER_KEY=你的production.key文件内容
  3. 临时跳过依赖旧credentials的发布任务:
    • 终端执行heroku config:set SKIP_CREDENTIALS_CHECK=true,然后在代码的发布脚本(如bin/rails release)中添加判断:若该变量存在,则跳过需要解密旧credentials的操作
    • 推送代码部署,成功后执行heroku config:unset SKIP_CREDENTIALS_CHECK恢复正常流程

关键注意事项

  • 本地先验证production.yml.enc和production.key配对正确:执行RAILS_ENV=production rails credentials:show,能正常显示内容则没问题
  • Heroku配置变量设置后即时生效,部署失败不会自动回滚变量,若出现解密错误,优先检查代码中密钥的调用路径是否正确

内容的提问来源于stack exchange,提问作者João Souza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 08:05:14