"pathutil"红宝石是否与 jekyll (v3.9.0) 和 ruby (v3.0.0) 兼容?



我的问题:我有一个基于jekyll的静态网站;在运行bundle exec jekyll serve(按照jekyll文档的指示(之后,我得到了下面的堆栈跟踪。我为堆栈跟踪中的博客文章文件创建的markdown文件完全是标准语法。我已经在谷歌上搜索了具体的错误,并得到了类似错误的帖子,但这些错误并不能解决我的问题。我还搜索了jekyll文档,看看是否有任何不兼容的地方。

Writing: /home/REDACTED/projects/thomdlee.github.io/_site/jekyll/update/2020/12/28/currently-in-maintenance.html
done in 0.356 seconds.
jekyll 3.9.0 | Error:  no implicit conversion of Hash into Integer
/home/REDACTED/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/pathutil-0.16.2/lib/pathutil.rb:502:in `read': no implicit conversion of Hash into Integer (TypeError)
from /home/REDACTED/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/pathutil-0.16.2/lib/pathutil.rb:502:in `read'

我的所有代码都可以在github上找到:https://github.com/thomdlee/thomdlee.github.io

我的环境:

  • Ubuntu 20.10(在Windows 10上的WSL 2中运行(
  • Ruby v3.0.0
  • Jekyll(宝石(v3.9.0
  • pathutil(gem(v0.16.2

pathutil似乎有弃用链接的问题

我也遇到了同样的问题,但将Ruby降级到2.7.x解决了这个问题。

根据这个答案:

Ruby 3.0不赞成使用最后一个参数作为关键字参数。必须在变量之前添加双splat**,才能支持行为。

以下是我如何将补丁应用于pathutil:

sudo sed -i.bak 's/, kwd/, **kwd/' $(gem which pathutil)

唯一的解决方案仍然是降级。

在Arch Linux上,您可以执行

sudo pacman -S ruby2.7
cd /PATH/TO/YOUR/JEKYLL/PROJECT
bundle-2.7 install
bundle-2.7 exec jekyll serve

来源:https://bbs.archlinux.org/viewtopic.php?id=265534

我在MacOS环境中遇到了同样的问题。

为了修复它,我在项目文件夹上运行了以下命令:

bundler update

最新更新