Jekyllが3.0にバージョンアップしていたので、年内にアップデートしておこうと思ったら動かなくなってしまった。
bundle update後にjekyll bした所、下のようなエラーが出た。

Deprecation: Collection#empty? should be called on the #docs array directly.
Called by /Users/xxx/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/octopress-ink-1.2.1/lib/octopress-ink/plugin/bootstrap.rb:163:in `posts?'.
Deprecation: Collection#select should be called on the #docs array directly.
Called by /Users/xxx/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/octopress-ink-1.2.1/lib/octopress-ink/plugin/bootstrap.rb:171:in `linkposts?'.
Liquid Exception: no implicit conversion of nil into String in _posts/2015-12-30-ipad-mini4.markdown
Liquid Exception: no implicit conversion of nil into String in sitemap.xml
jekyll 3.0.1 | Error: no implicit conversion of nil into String

新年を最新バージョンで迎えたかったのに「えーー」という感じ。
Jekyllを元の2.5.3に戻すとエラーは解消するので、jekyll 3.0の問題だろう。

Jekyll 3 changed site.posts from an Array to a Collection which causes deprecation warning in Ink #64
GitHubにも上記のような報告が上がっているので、そのうち修正されるかもしれないが、
取り急ぎ解決できるよう方法はないかと少し試行錯誤してみる。

まず上記ページ内のリンクjekyll/jekyll#4055を見てみると、
やり取りの中で白人男性が大勝利のポーズを決めているGIF画像が貼ってあったので、
英語はよく分からないがパッチによって改善しているのかもしれない。
最新のリポジトリに取り込まれているかな、と思いGitHubから直接取得するようにGemfileを変更してみる。

Gemfile
source 'https://rubygems.org'
gem 'octopress', '~> 3.0'
# gem 'jekyll', '2.5.3' # => エラーなし
# gem 'jekyll' # => 3.0.1だとエラー
gem 'jekyll', :github => 'jekyll/jekyll' # => GitHubから直接取得

改めてbundle updatejekyll bを実行したところまた別のエラーが。

Liquid Exception: Liquid syntax error: Unknown tag 'css_asset_tag' in _layouts/default.html
jekyll 3.0.1 | Error: Liquid syntax error: Unknown tag 'css_asset_tag'

ダメか。Syntax Highlightingの為にoctopress-solarizedを導入してcss_asset_tagを設置していたのだが、
このタグをうまく処理できないらしい。

これもGitHubに同じ症状の人が報告を上げていて、改善した様子がない。
jekyll serve failing with after following Installation #6
リンク先の「結局Hugoに移行した」という身も蓋もない解決策は置いておいて、
「2.5.xにダウングレードしたら期待通り動いたよ」というのが落としどころな気がしたので、
僕もひとまずJekyllのバージョンを元に戻した。

今回関連エラーを調べていたら8月ぐらいから似た症状の報告があり、
なかなか解消しないようなので、Hugoへの移行も少し考えておこうと思う。