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

Capistrano部署报错SSHKit::Runner::ExecuteError: No digester supplied求助

解决Capistrano部署时的"No digester supplied"错误

作为编程新手遇到这个问题别慌,这个报错大概率是capistrano-rbenv和依赖库版本不兼容导致的,咱们一步步来修复:

1. 检查并更新Gemfile里的相关依赖

首先打开项目根目录下的Gemfile,替换成下面的兼容最新版本的依赖配置:

group :development do
  gem 'capistrano', '~> 3.17'
  gem 'capistrano-rails', '~> 1.6'
  gem 'capistrano-rbenv', '~> 2.2'
  gem 'capistrano-bundler', '~> 2.1'
end

然后在本地终端执行命令更新依赖:

bundle install
bundle update capistrano capistrano-rbenv capistrano-rails capistrano-bundler

2. 修复Capistrano配置文件中的rbenv设置

打开项目的config/deploy.rb文件,找到rbenv相关配置,补充digester的指定(新版本rbenv需要明确摘要算法):

set :rbenv_type, :user # 若服务器上rbenv是系统级安装,就改成:system
set :rbenv_ruby, '你的Ruby版本号' # 比如 '3.2.2',必须和服务器上的Ruby版本一致
set :rbenv_custom_path, '/home/deploy/.rbenv' # 对应服务器上rbenv的实际安装路径
# 关键:添加这行指定digester
set :rbenv_digester, :sha256

3. 验证服务器上的rbenv配置

登录到你的生产服务器(终端执行ssh deploy@xx.xxx.xx.xx),运行下面的命令确认信息:

rbenv version # 查看服务器当前使用的Ruby版本
echo $HOME/.rbenv # 确认rbenv的安装路径

确保本地deploy.rb里的配置和服务器上的实际信息完全匹配。

4. 重新部署

回到本地终端,执行带trace的命令验证修复效果:

cap production deploy --trace

如果前面的步骤都配置正确,这个报错应该就消失了。

补充说明

这个错误的本质是:新版本的rbenv在验证Ruby版本时,要求明确指定摘要算法(digester),而旧版的capistrano-rbenv没有默认配置这一项,所以咱们手动指定:sha256就能解决问题啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:08:29