Ruby 2.6 下的 Jekyll 配置

重装系统之后尝试了最新版 Ruby 环境下的 Jekyll 搭建,把各种踩坑的过程记录在这里。

在「关于本站」一文中我提到,「Ruby 最新的 2.5 版本不支持某个依赖包的安装,需要用 2.4 版本」。现在 Ruby 版本已经迭代到了 2.6,总停留在旧版不是个办法,所以有心想要解决这些问题。一步一步从头开始。

更换国内软件源

1
2
3
4
gem sources --remove https://rubygems.org/
gem source -a https://gems.ruby-china.com
# 查看更换后的源
gem source

不换软件源的话下载龟速。需要注意的是,许多网上教程所提到的「淘宝源」已停止更新维护,应更改为 ruby-china 源。

上面是换了本地运行 Ruby 时的源,但在安装依赖时会优先调用 Gemfile 所规定的源。因此,还需要去网站目录下把 GemfileGemfile.lock 开头的 https://rubygems.org 全都改成 https://gems.ruby-china.com

依赖安装报错

接着按照文档说明一步一步安装。在网站目录执行 bundle install 安装依赖时可能会报错:

ffi requires Ruby version <= 2.5

意思是 ffi 这个包不支持最新的 Ruby 2.6。然而我在 RubyGems.org 上并没看到这个限制。翻 Gemfile.lock 文件,发现里面指定的 ffi 版本是 1.9.18 而非最新的 1.10.0。因此做修改:ffi (1.9.18) –> ffi (1.10.0)ffi (1.9.18-x64-mingw32)–> ffi (1.10.0-x64-mingw32),保存重新 bundle install,成功。

编译时的 Warning

编译时会报很多行相同的:

BigDecimal.new is deprecated; use BigDecimal() method instead

虽然对编译结果没有影响,但看着不爽,而且不方便看增量编译的结果。搜索不出个所以然,所以用了最粗暴的办法,把错误提示里本地 Ruby 安装目录下Ruby26-x64\lib\ruby\gems\2.6.0\gems\liquid-4.0.0\lib\liquid\utils.rb 这个文件第 49 行 的 BigDecimal.new 改成了 BigDecimal

其实根源在于 Ruby 安装目录下 Ruby26-x64\lib\ruby\2.6.0\bigdecimal.rb 这个文件里有一句 warn,用 # 把这一行注释掉也能去掉这个 warning。

-------------本文结束    感谢您的阅读-------------
0%