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

如何在Rails 7中获取credentials.yml.enc中的自定义环境变量?

Rails 7 自定义Credentials变量无法读取的解决方法

核心问题:读取方式错误

你不能直接用 Rails.application.new_key 读取自定义变量,必须通过 Rails.application.credentials 对象访问,正确写法是:

Rails.application.credentials.new_key

排查与修复步骤

  1. 确认credentials是否正确保存

    • 执行 EDITOR='code --wait' rails credentials:edit 后,必须保存并完全关闭编辑器,--wait 参数会等待编辑器关闭才会加密更新 credentials.yml.enc 文件,中途关闭可能导致修改未生效。
    • 检查项目根目录下的 master.key 文件是否存在,且权限设置为 600(执行 chmod 600 master.key),权限过高会导致Rails无法正常解密credentials。
  2. 在控制台验证变量是否存在
    打开Rails控制台(执行 rails c),依次执行以下命令排查:

    # 查看所有已加载的credentials键值对
    Rails.application.credentials.to_h
    # 尝试直接读取自定义变量
    Rails.application.credentials.new_key
    

    如果输出里能看到 new_key: "qwerty",说明变量已正确加载,否则需要重新编辑保存credentials。

  3. 多环境credentials的情况
    如果你是给特定环境(比如production)添加变量,需要编辑对应环境的credentials文件:

    EDITOR='code --wait' rails credentials:edit --environment production
    

    读取时无需额外指定环境(Rails会自动匹配当前运行环境),直接用 Rails.application.credentials.new_key 即可。

  4. 部署环境的注意事项

    • 生产环境不要提交 master.key 到代码仓库,应该通过设置 RAILS_MASTER_KEY 环境变量来提供解密密钥。
    • 确保部署环境的 RAILS_ENV 配置正确,避免读取了错误环境的credentials。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 09:27:03