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

执行cap production deploy命令报错,求助解决master.key缺失问题

解决Capistrano部署Rails 7时的database.yml和master.key缺失问题

1. 处理master.key缺失问题

Rails 7默认用credentials.yml.enc加密敏感配置,master.key是解密密钥。开发环境找不到该文件,通常是这两种情况:

  • 项目从版本库克隆而来,原作者未提交master.key(这是合规操作,绝对不能把密钥提交到Git)
  • 本地开发时通过环境变量RAILS_MASTER_KEY注入了解密密钥,而非依赖本地文件

解决步骤:

  • 先检查本地是否存在隐藏的config/master.key文件(开启文件管理器显示隐藏文件)
  • 如果确实没有,在本地开发环境执行rails credentials:edit,系统会自动生成新的master.key和credentials.yml.enc
  • 将新生成的master.key上传到生产服务器的/home/deploy/mynewapp/shared/config/目录

2. 处理database.yml配置

不要直接复制开发环境的database.yml到生产环境,两者数据库配置(库名、用户名、密码、主机)通常差异极大:

  • 在生产服务器的/home/deploy/mynewapp/shared/config/目录下新建database.yml,填写生产环境专属配置,示例:
    production:
      adapter: postgresql # 或mysql2等你使用的数据库适配器
      database: mynewapp_production
      username: 生产数据库用户名
      password: 生产数据库密码
      host: localhost
      pool: 5
      encoding: utf8
    
  • 执行chown deploy:deploy /home/deploy/mynewapp/shared/config/database.yml,确保文件权限匹配部署用户

3. 优化Capistrano部署配置

在项目的config/deploy.rb中添加以下代码,让Capistrano自动将共享目录的配置文件链接到当前部署版本:

append :linked_files, "config/database.yml", "config/master.key"

后续部署时,系统会自动关联shared/config下的文件,无需每次手动复制

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 22:07:08