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
相关产品推荐
相关产品推荐

