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

Rails加密credentials配置正确但访问stripe密钥返回nil如何解决

问题解决方法

核心错误原因

YAML配置存在规则冲突:YAML语法不允许重复定义同级同名键,你连续三次定义了顶级stripe键,前两次的development、test环境配置会被最后一次的production配置完全覆盖,导致非production环境读取不到对应配置、production环境也会因为调用路径和残留配置结构不匹配返回空值。

第一步:修复credentials配置

修改你的credentials文件,把三套stripe配置合并为同一个stripe顶级键下的子节点,正确配置如下:

# Used as the base secret for all MessageVerifiers in Rails, including the one protecting cookies.
secret_key_base: 1234567890

stripe:
  development:
    stripe_public_key: pk_test_1234567890
    stripe_secret_key: sk_test_1234567890
  test:
    stripe_public_key: pk_test_1234567890
    stripe_secret_key: sk_test_1234567890
  production:
    stripe_public_key: pk_live_1234567890
    stripe_secret_key: sk_live_1234567890

保存修改后重新执行rails credentials:show确认配置结构正常。

第二步:调用凭证

你之前第二种调用写法逻辑完全正确,配置修复后直接使用即可正常读取:

const stripe = Stripe("<%= Rails.application.credentials.stripe[Rails.env.to_sym][:stripe_public_key] %>")

可选验证步骤

如果修改后依旧读取失败,可以通过Rails控制台快速定位问题:

  • 执行命令启动对应环境的Rails控制台:rails c -e 对应环境名(development/test/production)
  • 执行读取命令验证:Rails.application.credentials.stripe.dig(Rails.env.to_sym, :stripe_public_key)
    如果控制台返回对应密钥值,说明配置读取链路正常,问题出在视图渲染环节;如果返回nil,检查对应环境的config.require_master_key配置是否生效、master.key文件是否存在且权限正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 04:12:00