このブログの構築に使用しているJekyllをv2.5.3
からv3.0.1
にアップデートした際に、いろいろと問題が発生したのでここに記しておく。
Jekyllをアップデート
gem update jekyll
# もしくは、bundlerを使っているなら
bundle update
よし、これでいい。
さっそく動かなくなる
( -ω-)y─┛~~~
エラーその1: jekyll-paginateがない。
さっそくローカルサーバーを立ち上げるべく、jekyll serve
コマンドを叩くがエラー。
Deprecation: You appear to have pagination turned on, but you haven't included the `jekyll-paginate` gem. Ensure you have `gems: [jekyll-paginate]` in your configuration file.
(ページネーションがオンになってるようだけど、gemの jekyll-paginate
をインクルードできてないよ。
設定ファイルに gems: [jekyll-paginate]
を追記してくれよ。)
とのことなので、jekyll-paginate
をインストールして、
gem install jekyll-paginate
# もしくはbundlerの場合、Gemfileに追記
gem 'jekyll-paginate'
_config.yaml
に使用するGemパッケージを追記。
gems: [jekyll-paginate]
よし、これでいい。
エラーその2: 日付のチェックが厳しくなった。
draftに置いていた雛形ファイルの日付がおかしいと怒られる。
Error reading file /Users/yuhiisk/Work/Github/blog/_drafts/2015-00-00-****.md: Invalid date '2015-00-00': Document '_drafts/2015-00-00-**.md' does not have a valid date in the YAML front matter.
jekyll 3.0.1 | Error: comparison of Jekyll::Document with Jekyll::Document failed
リネームした。
2015-00-00-****.md
↓
2015-01-01-****.md
よし、これでいい。
エラーその3: redcarpetがない。
次にredcarpet
が無いからgemをインストールしてくれよ、と怒られる。
Dependency Error: Yikes! It looks like you don't have redcarpet or one of its dependencies installed. In order to use Jekyll as currently configured, you'll need to install this gem. The full error message from Ruby is: 'cannot load such file -- redcarpet' If you run into trouble, you can find helpful resources at http://jekyllrb.com/help/!
Conversion error: Jekyll::Converters::Markdown encountered an error while converting '_posts/2015-07-30-generate-the-closure-in-for-loop.md':
redcarpet
Liquid Exception: redcarpet in category/javascript/index.html
ERROR: YOUR SITE COULD NOT BE BUILT:
------------------------------------
redcarpet
v3.0からはJekyllにredcarpet
が含まれなくなったようだ。
redcarpet
は個別にインストールする。
gem install redcarpet
# もしくはbundlerの場合、Gemfileに追記
gem 'redcarpet'
よし、これでいい。
エラーその4: メソッドが未定義。
Deprecation: Collection#each should be called on the #docs array directly.
Called by /Users/yuhiisk/Work/Github/blog/_plugins/sitemap_generator.rb:123:in `fill_posts'.
jekyll 3.0.1 | Error: undefined method `name' for #<Jekyll::Document _posts/2013-05-18-welcome.md collection=posts>
sitemap_generator.rb
というサイトマップを生成するプラグインを入れてたんだけど、その中で使われているメソッドがねぇよボケ、と怒られた。
これは代替として、gemでjekyll-sitemap
をインストールする。
gem install jekyll-sitemap
# もしくはbundlerの場合、Gemfileに追記
gem 'jekyll-sitemap'
これも _config.yaml
に使用するGemパッケージを追記。
gems: [jekyll-paginate, jekyll-sitemap]
よし、これでいい。
エラーその5: pygmentsがない。
おいおい、pygments
が無いじゃねぇか。いいかげんにしろよマジで。
と怒られる。
Dependency Error: Yikes! It looks like you don't have pygments or one of its dependencies installed. In order to use Jekyll as currently configured, you'll need to install this gem. The full error message from Ruby is: 'cannot load such file -- pygments' If you run into trouble, you can find helpful resources at http://jekyllrb.com/help/!
Conversion error: Jekyll::Converters::Markdown encountered an error while converting '_posts/2013-05-18-welcome.md':
pygments
ERROR: YOUR SITE COULD NOT BE BUILT:
------------------------------------
pygments
これも先ほどと同様、Gemをインストールする。
注意点として、パッケージ名は pygments
ではなくて、pygments.rb
な点だ。
gem install pygments.rb
# もしくはbundlerの場合、Gemfileに追記
gem 'pygments.rb'
よし、これでいい。
エラーの原因
原因はメジャーアップデートによる構成の変更によるものだ。
ぼくはGemをグローバルにインストールせず、bundlerで管理しているので、Gemfile.lock
を比べてみたら違いが一目瞭然だった。
アップデート前(v2.5.3
)
jekyll (2.5.3)
classifier-reborn (~> 2.0)
colorator (~> 0.1)
jekyll-coffeescript (~> 1.0)
jekyll-gist (~> 1.0)
jekyll-paginate (~> 1.0)
jekyll-sass-converter (~> 1.0)
jekyll-watch (~> 1.1)
kramdown (~> 1.3)
liquid (~> 2.6.1)
mercenary (~> 0.3.3)
pygments.rb (~> 0.6.0)
redcarpet (~> 3.1)
safe_yaml (~> 1.0)
toml (~> 0.1.0)
アップデート後(v3.0.1
)
jekyll (3.0.1)
colorator (~> 0.1)
jekyll-sass-converter (~> 1.0)
jekyll-watch (~> 1.1)
kramdown (~> 1.3)
liquid (~> 3.0)
mercenary (~> 0.3.3)
rouge (~> 1.7)
safe_yaml (~> 1.0)
メジャーアップデートされたので、JekyllにバンドルされているGemパッケージも変更になっている。
次のパッケージはv3.0では含まれなくなったので、もし次の何かしらの機能をすでに使っていたら、別途インストールする必要がある。
- jekyll-coffeescript
- jekyll-gist
- jekyll-paginate
- pygments.rb
- redcarpet
新規でインストールする場合でも覚えておくといいだろう。
Ruby製のシンタックスハイライター"Rouge
"
ちなみにv3.0からはハイライターが pygments
からRouge
に変更になっている。
pygments
はPython製であるが、Rouge
はピュアRubyで書かれたシンタックスハイライターだ。60以上の言語をサポートしており、pygments
用に設計されたCSSに対応している。つまり出力には互換性がある。
- Rouge
- jneen/rouge – Github
まとめ
これからもJekyllを愛していきます。
We will continue to be loved now the Jekyll. Thanks.