Jump to the content

Update Jekyll-3.0

Jekyll

    Update Jekyll-3.0

    このブログの構築に使用しているJekyllv2.5.3からv3.0.1にアップデートした際に、いろいろと問題が発生したのでここに記しておく。

    Jekyll

    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に対応している。つまり出力には互換性がある。

    まとめ

    これからもJekyllを愛していきます。

    We will continue to be loved now the Jekyll. Thanks.

    参考サイト

    注目記事

    最近の記事

    ぼくが書いてます

    フロントエンドエンジニア

    イソップ

    ページの先頭に戻る

    Search results

    ×