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

Ruby 3.3.0下Jekyll Scholar 7.1.3编译报错:undefined method `convert!'

修复Jekyll中{% bibliography %}标签触发的Liquid异常(Ruby 3.0+兼容方案)

这个错误的核心原因是:Ruby 3.0及以上版本移除了String类的convert!方法,但你使用的旧版bibtex-ruby插件仍在调用该方法,导致Liquid编译时抛出异常。以下是无需回退到Ruby 2.7的修复方案:

方案1:升级兼容Ruby 3.x的插件版本

这是最稳妥的长期解决方案:

  • 打开你的Gemfile,更新jekyll-bibliography和bibtex-ruby的版本声明为兼容Ruby 3.x的最新稳定版:
    gem 'jekyll-bibliography', '~> 1.1.0'
    gem 'bibtex-ruby', '~> 4.0.0'
    
  • 执行命令更新依赖:
    bundle update jekyll-bibliography bibtex-ruby
    
  • 重新编译项目验证:
    bundle exec jekyll serve
    

方案2:手动修改bibtex-ruby源码(临时应急)

如果暂时无法升级插件,可直接修改本地gem的代码:

  • 先定位bibtex-ruby的安装路径:
    bundle show bibtex-ruby
    
  • 打开路径下的lib/bibtex/names.rb文件,找到调用convert!的代码行
  • 将string.convert!替换为Ruby 3.x兼容的字符串处理逻辑:
    string.encode(string.encoding, undef: :replace, replace: '')
    
  • 保存文件后重新运行Jekyll编译

方案3:锁定整套兼容版本组合

如果升级单个插件出现依赖冲突,可直接锁定一套经过验证的兼容版本:
在Gemfile中添加以下声明:

gem 'jekyll', '~> 4.3.0'
gem 'jekyll-bibliography', '~> 1.1.0'
gem 'bibtex-ruby', '~> 4.0.0'
gem 'latex-decode', '~> 0.3.2'

执行bundle install安装依赖后,重新编译项目即可。

验证标准:运行bundle exec jekyll build后,Liquid异常消失,页面能正常生成参考文献,即为修复成功。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 04:44:50