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

新设备克隆Rails项目启动时报Rails::Secrets::MissingKeyError如何解决

问题根源

报错要求的RAILS_MASTER_KEY与你配置的secret_key_base是两个独立的Rails配置项:
Rails 5.1版本开始支持加密secrets管理机制,敏感配置会被加密存储在config/secrets.yml.enc文件中,解密该文件必须依赖对应的master key。master key默认存放在项目的config/master.key路径,该文件默认被加入.gitignore规则,不会随代码提交到远程仓库,因此克隆旧项目时不会自动携带该文件,就会触发本次报错。

可用解决方案
  • 方案1:向项目团队索要原项目的master.key文件,放到你本地项目的config目录下即可。如果团队统一通过环境变量传递master key,拿到对应的RAILS_MASTER_KEY值后,在本地启动服务前配置对应环境变量即可,示例启动命令:
    RAILS_MASTER_KEY=你获取到的密钥值 rails s
    
  • 方案2:如果本地开发场景不需要用到加密secrets内的配置,可直接关闭加密secrets校验,在config/environments/development.rb中添加如下配置:
    config.read_encrypted_secrets = false
    
  • 方案3:如果原master key已丢失,可直接删除本地已存在的config/secrets.yml.enc和config/master.key文件,执行rails secrets:setup命令重新生成一套新的加密密钥和加密配置文件,再把需要的敏感配置重新写入secrets即可。
额外注意事项

你此前在config/environments/development.rb中添加的config.secret_key_base = ENV["SECRET_KEY_BASE"]配置,会覆盖config/secrets.yml中写死的开发环境secret_key_base值。如果你的本地环境没有配置SECRET_KEY_BASE环境变量,解决完master key问题后还会触发secret_key_base缺失的报错,可二选一处理:

  • 删除development.rb中的这行配置,直接使用secrets.yml中写死的开发环境secret_key_base值
  • 在本地开发环境配置好SECRET_KEY_BASE环境变量

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 22:57:01