middlemanに移行しようとしてやっぱりやめた

追記

esaで書いた記事をGitHub Pagesでブログとして公開する | Qiitanownabe さんがやってくれてました!

圧倒的! :metal: :pray:

前から jekyll に対して不満があったこと

  • デフォルトの markdown converter kramdown がいまいち
    • code block を書く際に, バッククオートが使えない
    • 代わりに ~ を使えるが、 highlight デザインが微妙
    • jekyllの公式ページ を見ると, {percent highlight ruby percent} (percent は % に置き換えて読んでください) のような書き方をする必要がある… げろげろ :fearful:
  • pagination 導入がちょっとめんどい (ほんのちょっとだけ)

middleman のよさそうなところ

  • いろんな markdown parser が使える(多分)
  • pagination 導入が楽
  • 構成がわかりやすい
  • Rails like な view helper が使える (自分でもhelper method簡単に定義できる)

断念するまでのプロセス

  • local で middleman server を起動してサイトを見るところまでは普通にできた
  • そのままの構成で mmyoji/mmyoji.github.io に push してもサイトは見れない
  • middleman deploy 用の middleman-deploy は「サポートされてません」的なメッセージが出て, 代わりに middleman-gh-pages を使おうとしたが、deployコマンドを叩くと repository が build/ がルートになって上書きされてしまった。
    • ページ自体は見れた
    • その場合、 mmyoji/mmyoji.github.io を sub module にして、プロジェクト全体は別のディレクトリで管理する必要性が出てきそう?だったので断念
  • また最終的に esa.io の webhook を使いたかったが、手軽にできそうになかった

現状の esa.io の webhook の挙動

  • esa.io 側の特定のディレクトリで記事を公開(ship it)したら、設定している github の repository の特定のフォルダに *.md ファイルが作成される
  • 作成されるファイル名が {記事ID}.md のような形式になってしまい、 jekyll との連携ができない
    • jekyll のファイル名は 2016-07-27-my-post.md のような形式になっている必要があるため
    • 先ほど feedback を送ったので、もし作成されるファイル名をカスタマイズできるなら完全に esa だけで記事公開できるようになるので、かなり良い :blush:

こういった挙動を middleman に組み込むとしたら多分以下のような感じ

  • esaで記事を公開する
  • github に push される
  • github の API を使って、 push されたファイルを見て、どこか別のサーバーにリクエストを飛ばす(これが可能かどうか)
  • そのサーバーで deploy コマンドを叩いてもらう

わざわざサーバー立てるのもアホらしく、おそらく github.io 使わずに EC2 とかで middleman を動かしてればここら辺そこまで苦労せず自動化できていいのかなーとか想像してます。

結局

  • jekyll では kramdown の代わりに redcarpet を使って, esa, Qiita, github で使えるような codeblock を使えるように
    • push する度に github から kramdown しかサポートしないから早く _config.yml 書き換えて! とメールが届きますが、使えるうちは無視しようと思います…
  • ページネーションに関しては 公式 に書いてあるコードを貼り付けたら動いたので解決
    • jekyll3 では jekyll-pagination を Gemfile に含めておく必要があります。

なんとも遠回りばかりしてる1日でした

Contents