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

Ruby3.1.2执行bundle exec jekyll build报错排查

Jekyll 3.8.6 + Ruby 3.1.2 构建报错排查方案

核心原因是Jekyll 3.8.6发布时Ruby 3.x尚未推出,Ruby 3.0之后移除了部分默认标准库、调整了方法参数校验逻辑,老版本依赖链存在多处兼容问题,按以下步骤逐一修复即可:

1. 清理旧依赖锁定状态

  • 直接删除项目根目录下的Gemfile.lock,旧锁文件会固定拉取未适配Ruby3的历史版本依赖,之前单独加gem触发连锁报错就是这个原因
  • 保留Gemfile里的gem "webrick"配置,webrick从Ruby 3.0开始被移出标准库,这个依赖是必须的
  • 把之前添加的rexml依赖调整为gem "rexml", "~> 3.2.5",不要用3.2.0-3.2.4版本,这几个版本调整了内部文件结构,会触发kramdown的加载错误

2. 修复参数数量不匹配报错

你遇到的wrong number of arguments (given 2, expected 1)是老版本依赖的已知Ruby3兼容bug,直接在Gemfile里锁定以下依赖的兼容补丁版本即可:

  • gem "forwardable-extended", "~> 2.6.1":2.6.0版本的委托方法没有适配Ruby3的参数传递规则,2.6.1是专门修复该问题的补丁版
  • gem "liquid-tag-parser", "~> 1.9.1":1.9.0版本存在和forwardable-extended同款的参数校验问题
  • 如果升级前两个依赖后还是报同类错误,直接重装jekyll-assets 3.0.x分支最新补丁版即可,不要用早期的3.0.12初始发布版

3. 验证kramdown依赖适配

最开始触发的cannot load such file -- rexml/parsers/baseparser错误,在rexml锁定到3.2.5以上版本后会自动修复,不需要额外升级kramdown到2.x版本,避免触发其他插件的兼容问题。

4. 重新执行构建

  • 先运行bundle clean --force清理本地残留的旧版本gem缓存
  • 运行bundle install重新拉取所有适配后的依赖
  • 再执行bundle exec jekyll build即可正常构建

兜底兼容方案

如果上述步骤操作后还是存在其他零散的Ruby3兼容报错,直接把Jekyll版本升级到3.x分支的最终维护版3.9.5即可,只需要把Gemfile里的jekyll依赖改为gem "jekyll", "~> 3.9.5"。

不要直接升级到Jekyll 4.x,4.x修改了大量插件API,和你当前使用的jekyll-assets 3.x版本不兼容,会触发更多难以排查的依赖错误。
3.9.5版本完全兼容Jekyll 3.8的配置和插件API,专门做了Ruby3全系列适配,不需要修改任何站点代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 13:27:18