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

升级Ruby环境后Capistrano部署执行sidekiq:quiet任务报错求助

解决Capistrano部署sidekiq:quiet时的bundler/dep_proxy LoadError问题

你遇到的问题核心是部署环境的Bundler版本和本地不一致,导致sidekiqctl加载依赖时找不到bundler/dep_proxy文件。虽然本地的Ruby、RubyGems和Bundler都是当时最新版本,但服务器端的Bundler可能没同步到指定版本,或者Capistrano部署时调用了错误的Bundler版本。下面是几个针对性的解决方案:

1. 锁定Bundler版本到Gemfile

在项目Gemfile中明确指定Bundler版本,确保部署时服务器使用和本地一致的版本:

gem 'bundler', '1.16.1'

然后在本地执行:

bundle install

这样Gemfile.lock会记录这个版本,Capistrano部署时会优先使用该版本的Bundler。

2. 配置Capistrano强制使用指定Bundler版本

在deploy.rb文件中添加以下配置,告诉Capistrano部署时调用你指定的Bundler版本:

set :bundle_version, '1.16.1'

这会避免服务器上其他Bundler版本干扰部署流程。

3. 清理服务器上的Bundler冗余版本

服务器上安装的多个Bundler版本可能导致调用混乱,登录服务器执行以下命令清理并重新安装指定版本:

# 卸载所有Bundler版本
gem uninstall bundler --all
# 重新安装1.16.1版本
gem install bundler -v 1.16.1

4. 重新同步项目依赖

登录服务器,进入项目current目录,重新执行bundle安装,确保依赖和本地完全匹配:

cd /var/www/test/htdocs/current
bundle install --deployment

这会重新生成共享目录下的bundle文件,修复可能损坏或版本不匹配的依赖。

错误原因说明

bundler/dep_proxy是Bundler特定版本的内部文件,不同版本的Bundler会调整内部文件结构。如果服务器使用的Bundler版本和你本地的1.16.1不一致(比如服务器自动升级到了更高版本),就会出现找不到该文件的LoadError。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:21:26