Rails 5.1.2中secrets:edit出现两个空文件,如何找回密钥文件?
Rails 5.1.2 密钥文件定位与空文件清理方案
一、先明确密钥存储位置
Rails 5.1+ 不再使用明文的secrets.yml,默认采用加密存储方案:用config/secrets.yml.enc保存加密后的密钥内容,搭配config/secrets.yml.key解密密钥,或通过环境变量RAILS_MASTER_KEY注入密钥。你的应用能正常运行,说明密钥已被正确加载,大概率是以下两种情况之一:
- 本地
config目录下存在secrets.yml.key文件,文件内的单行字符串就是解密密钥 - 终端环境变量
RAILS_MASTER_KEY已配置,执行echo $RAILS_MASTER_KEY即可查看密钥内容
二、解决secrets:edit多开空文件的问题
你遇到的E173提示是命令执行异常导致生成了多余的临时空文件,按以下步骤处理:
- 强制退出所有编辑窗口
卡在vi提示时,直接按esc :q!即可一次性退出所有文件,无需重复操作。 - 清理临时空文件
Rails执行secrets:edit时会在/tmp目录生成临时副本,空的临时文件可直接清理:
也可手动进入find /tmp -name "secrets.yml.enc.*" -empty -delete/tmp目录,找到带secrets前缀的空文件直接删除。 - 执行正确的编辑命令
注意是rails secrets:edit而非vi secrets:edit——你之前的命令有误,这可能是空文件问题的诱因之一。执行前确认config/secrets.yml.key存在,或RAILS_MASTER_KEY环境变量已配置。
三、定位实际密钥存储文件
- 加密后的密钥内容存于
config/secrets.yml.enc,该文件无法直接编辑,必须通过rails secrets:edit解密后操作 - 解密密钥要么在
config/secrets.yml.key(本地开发常用),要么在环境变量RAILS_MASTER_KEY中
四、验证密钥有效性
执行以下命令可直接查看解密后的密钥内容,确认配置正常:
rails secrets:show
内容的提问来源于stack exchange,提问作者Linda Keating
相关产品推荐
相关产品推荐

