误编辑credentials.yml.enc撤销后报错,求解决方案(可重建凭证)
解决Rails credentials解密失败的问题
你的情况是因为手动修改了加密后的credentials.yml.enc文件——这个文件是二进制加密格式,并非纯文本,哪怕用ctrl+z撤销修改,文件的加密校验结构已经被破坏,导致原master.key无法正常解密它。既然项目还没上线,直接重建credentials是最快捷的方案,步骤如下:
删除损坏的文件
- 删除项目根目录下的
config/credentials.yml.enc - 删除
config/master.key(这个文件本来就不该提交到版本库,本地删除完全没问题)
- 删除项目根目录下的
重新生成credentials
在终端运行:rails credentials:edit这个命令会自动生成新的
credentials.yml.enc和master.key,同时打开你的默认文本编辑器(如果没自动打开,可指定编辑器,比如EDITOR=nano rails credentials:edit)。恢复配置内容(如果有)
把你之前在credentials里配置的内容(比如数据库密码、第三方API密钥等)重新输入到编辑器里,保存退出即可。验证修复效果
运行rails credentials:show,如果能正常显示加密内容,说明重建成功;再启动服务器rails s,之前的ActiveSupport::MessageEncryptor::InvalidMessage错误应该就消失了。
内容的提问来源于stack exchange,提问作者Augusto Barbosa Arraes
相关产品推荐
相关产品推荐

