Rails7生产服务器执行rake db:reset报ActiveSupport加密无效错误
解决Rails 7 VPS部署后
rake db:reset报ActiveSupport::MessageEncryptor::InvalidMessage错误 这个错误的核心是Rails无法解密加密配置文件,本质是加密密钥与加密后的配置文件不匹配,针对VPS环境,按以下步骤排查:
验证RAILS_MASTER_KEY环境变量
本地config/master.key的内容必须和服务器的RAILS_MASTER_KEY环境变量完全一致(不能有空格、换行符)。在服务器执行:echo $RAILS_MASTER_KEY对比本地
master.key的内容,不一致的话修正服务器的环境变量(可写入~/.bashrc、~/.profile或部署工具的环境配置文件中)。同步config/credentials.yml.enc文件
服务器上的config/credentials.yml.enc必须和本地完全相同,部署时如果用Git或Capistrano,确保这个文件被同步到服务器。如果缺失或不匹配,直接将本地的该文件复制到服务器项目的对应目录。指定正确的RAILS_ENV执行命令
服务器默认环境通常是production,执行命令时明确指定环境,避免加载错误的配置:RAILS_ENV=production rake db:reset重新生成服务器端credentials(终极方案)
如果上述方法都无效,在服务器项目目录下重新生成credentials:- 先设置编辑器:
export EDITOR=nano - 生成新的密钥和加密文件:
rails credentials:edit - 复制本地
credentials.yml.enc中的配置内容(排除密钥部分)到新打开的编辑窗口,保存退出。 - 将新生成的
master.key内容设置为服务器的RAILS_MASTER_KEY环境变量。
- 先设置编辑器:
内容的提问来源于stack exchange,提问作者John Sall
相关产品推荐
相关产品推荐

