重装系统之后尝试了最新版 Ruby 环境下的 Jekyll 搭建,把各种踩坑的过程记录在这里。
在「关于本站」一文中我提到,「Ruby 最新的 2.5 版本不支持某个依赖包的安装,需要用 2.4 版本」。现在 Ruby 版本已经迭代到了 2.6,总停留在旧版不是个办法,所以有心想要解决这些问题。一步一步从头开始。
更换国内软件源
1 |
|
不换软件源的话下载龟速。需要注意的是,许多网上教程所提到的「淘宝源」已停止更新维护,应更改为 ruby-china 源。
上面是换了本地运行 Ruby 时的源,但在安装依赖时会优先调用 Gemfile
所规定的源。因此,还需要去网站目录下把 Gemfile
和 Gemfile.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。