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

Capistrano部署抛出Psych错误:safe_load参数数量不符(传入4个,预期1个)

解决Bundle Install时的Psych参数不兼容错误

你遇到的是Ruby 2.5.x 与高版本 Psych gem 不兼容的问题——Psych 4.x 改动了 safe_load 方法的参数签名,但 Ruby 2.5.3 自带的 Rubygems 仍在使用旧的参数调用逻辑,直接导致了参数数量不匹配的报错。

下面是具体的解决步骤:

1. 锁定Psych到兼容版本

在项目的 Gemfile 中添加一行,强制使用4.0以下的Psych版本:

gem 'psych', '< 4.0'

2. 本地更新依赖并提交锁文件

在本地环境执行命令更新依赖,生成新的锁文件后提交到版本控制:

bundle install
git add Gemfile Gemfile.lock
git commit -m "Lock psych version to <4.0 for Ruby 2.5 compatibility"

3. 清理部署服务器的Gem缓存(推荐操作)

登录部署服务器,清理Bundler缓存,避免残留的高版本Psych干扰部署:

bundle clean --force

4. 重新执行部署

现在重新运行Capistrano部署命令,bundle install 环节应该就能正常完成了。

为什么会突然触发这个问题?

你提到之前部署正常且未修改代码,大概率是某个依赖gem的新版本间接引入了Psych 4.x。本地环境因为已有缓存或锁文件限制没拉取这个版本,但部署服务器在本次部署时尝试安装了高版本Psych,触发了Ruby 2.5.x Rubygems与Psych 4.x的API兼容性冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 09:42:35