Jekyllで記事を書き始めるためのRakeタスク

OctopressからJekyllにしてちょっとだけ困ったのが記事の書き始め。

Octopressには雛型っぽいものを作ってくれるRakeタスクがあった。Rakeの[〜]記法を使わなければならないのはいまいちだったが、なくなってみると困るものだ。そういうわけで、Octopressで不満だったところを自分なりの解消しつつ、なんとなくそれらしい感じに動くJekyll向けのタスクを書いてみた。(たぶんOctopressでも使えると思う。)

コード

まず新しく記事を書き始める手順。

% rake new

環境変数EDITORに従ってエディタが起動する。frontmatterのdateには現在の日時が入っている。layoutcommentsなど、基本的に決め打ちなので変更したければタスクをいじること。カテゴリやタグをいくつかに絞っているなら最込から列挙しておくとよいかも。

_filename_という見慣れないフィールドがあるが、これは_postsにファイルを保存する際、ファイル名として使う文字列を記述するために独自に使用しているもの。これとdateの内容からファイル名を構成する。

_filename_がなかったり、空だったり、初期状態のままだったりしたら無視される。そういうときにはdatetitleからファイル名を構成する。

なお、_filename_はこのためだけに勝手に使っている。ファイル名を構成したあとは用なしになるので、記事ファイルを_postsに保存すタイミングで削除される。

記事を書き終えたら公開するが、公開して、その直後に直しが入るなんてことはよくある。最後に編集した記事ファイルをもう一度開くタスクを用意した。

% rake last

mtimeが最も新しいものを選んでエディタを起動する。更新日時ではなく、ファイル名に含まれる日付が最も新しい記事ファイルを開くには次のタスクを使う。

% rake latest

frontmatterのdateまでは見ていなくて、あくまでファイル名から判断している。

重要なこと

rake newしてエディタを終了させたとき、何らかの理由でファイルの移動ができない状況になることがあるかもしれない。できる限り記事の中身を残すようにしたつもりだが、抜けがあるかもしれないので注意すること。

あと、変なバグでコケるとかあるかも。

様子をみながら使ってください。