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

Rails生产环境配置Credentials后Stripe密钥无法读取该如何解决?

Rails生产环境Credentials正确配置方案

是的,生产环境必须配置对应的master key环境变量,因为密钥文件默认不会提交到代码仓库。


两种凭证模式的配置方法

1. 全局凭证模式(默认模式,未加--environment参数编辑)

  • 你本地的config/master.key是解密config/credentials.yml.enc的唯一密钥,该文件默认被加入.gitignore,不会随代码部署到生产环境
  • 生产环境配置方法:添加环境变量RAILS_MASTER_KEY,值为本地config/master.key文件里的32位字符串即可

2. 生产环境专属凭证模式(执行过rails credentials:edit --environment production)

  • 该模式下凭证存储在config/credentials/production.yml.enc,对应的解密密钥是config/credentials/production.key,同样默认被.gitignore排除
  • 生产环境两种配置方式二选一:
    • 将本地config/credentials/production.key文件上传到生产环境对应路径
    • 配置环境变量RAILS_PRODUCTION_MASTER_KEY,值为该key文件的内容

常见问题排查

  • 先在生产环境执行rails c,输入Rails.application.credentials.stripe_live检查是否能正常输出密钥:
    • 如果输出为nil,说明密钥未正确解密,优先检查master key环境变量是否正确、是否能被Rails进程读取(注意部分web服务器如Nginx、Puma默认不会继承shell的环境变量,需要单独在服务配置中声明环境变量)
    • 如果能输出正确值,说明是配置加载顺序问题:不要把Stripe密钥配置写在config/environments/production.rb中,建议移到config/initializers/stripe.rb初始化文件,内容为:
      Stripe.api_key = Rails.application.credentials.stripe_live
      
  • 检查config/environments/production.rb中的config.require_master_key配置是否为true,该配置为false时会跳过master key校验,凭证读取失败也不会主动报错

内容的提问来源于stack exchange,提问作者CJG

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 23:15:04