windows本地部署 jekyll
- 搭建git pages过程中,发现github编译失败之后处理很麻烦(多次push),于是打算本地搭建一个能编译检查的jekyll
- warning:本地部署jekyll很麻烦,慎重。
配置Jekyll 参考:
git pages配置:https://zhuanlan.zhihu.com/p/51240503
本地部署jekyl:https://zhuanlan.zhihu.com/p/139567128
jekyll official: https://jekyllrb.com/docs/installation/windows/
执行过程
1 安装Ruby
installer选默认配置,C盘爆的自己改一下安装路径
最后弹出来一个cmd,猜测对应official中的"ridk install step on the last stage of the installation wizard",自己选123安装下述3之1(我选的1)
1 - MSYS2 base installation
2 - MSYS2 system update (optional)
3 - MSYS2 and MINGW development toolchain>(
2 ruby -v和 gem -v 查看版本 # done
3 安装 Jekyll: install Jekyll and Bundler using
gem install jekyll
, gem install bundler
jekyll 报错
问题:
- 安装完,jekyll -v 是正常的;但是一进gitbook仓库就jekyll无法执行。
in `encode': "\\xA3" on UTF-8 (Encoding::InvalidByteSequenceError)
from G:/data/Ruby31-x64/lib/ruby/3.1.0/pathname.rb:52:in `chop_basename'
from G:/data/Ruby31-x64/lib/ruby/3.1.0/pathname.rb:378:in `plus'
from G:/data/Ruby31-x64/lib/ruby/3.1.0/pathname.rb:358:in `+'
from G:/data/Ruby31-x64/lib/ruby/3.1.0/pathname.rb:424:in `join'
from G:/data/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.4.9/lib/bundler/settings.rb:439:in `global_config_file'
修复
直接原因:%USERFROFILE%是中文,因此初始化global_config_file时失败了
找到 G:/data/Ruby31-x64/lib/ruby/3.1.0/pathname.rb:52
,
添加编码转换
#### interpolate ####
begin
base = base.encode('utf-8', 'gb2312')
path = path.encode('utf-8', 'gb2312')
rescue
base = base
path = path
end
#### #### ####
if /\A#{SEPARATOR_PAT}?\z/o.match?(base)
return nil
else
return path[0, path.rindex(base)], base
end
jekyll -v, jekyll server
- 直接原因修好了,还是无法执行;
- 根本原因:路径下存在一个Gemfile,jekyll会自动读取其中的内容执行
(罪魁祸首↓)
# frozen_string_literal: true
source "https://rubygems.org"
git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
gem "jekyll"
gem 'jekyll-feed'
gem 'jekyll-readme-index'
gem 'jemoji'
gem 'webrick'
# gem "rails"
- 安装上述所有包
gem install jekyll-feed jekyll-readme-index ....
如果很慢应该可以搜一下 gem source换个源;如果还是很慢,把挂着的abc给关了吧😓
- 最后执行 jekyll server(还需要开管理员权限 在cmd中执行😓 否则permission denied 真是谢谢我过去的折腾)
Mark: ruby简单语法
ruby的打印
# puts base # 输出乱码
# puts base.inspect # 输出\x开头的字节
# puts path
# puts base == ':)' #
# puts path.rindex(base).inspect
ruby的空判断(空字符串)
# puts base.nil?
ruby的错误捕捉机制:
begin
rescue
end