rcmdnk's blog
Last update

Octopressは毎回全ての記事からサイトを作り直したり、 previewするときも全てのファイルを管理するので 記事数が多くなってくると時間がかかったり preview時には動きが遅くなってしまいます。

その辺の取り敢えずの対処法について。

Sponsored Links

isolate/integrate

Octopressにはisolateintegrateというrake taskが用意されていて、

$ rake isolate[2013-01-01-a.md]

とすると2013-01-01-a.md以外の記事をsource/_stashディレクトリに 退避させてgeneratepreviewの対象外にします。

これにより一時的にこのポストだけのサイトを作り高速にチェックする事が出来ます。

チェックが終わったら

$ rake integrate

としてやれば_stashから_postへ全ての記事が戻されます。

これを忘れたままdeployしてしまうと1つのポストだけのブログになってしまうので 注意です。

ちなみにgen_deployコマンドではintegrategenerateより先に 実行しているので自動的に全ポストが反映されます。

一応コマンドになってますが、基本的にはただmvしているだけなので、 複数記事だけ見てみたいとかだと手動で_postから_stashへ動かしても 同じ事が出来ます。

generate_only/preview_only/watch_only

上の状態だと毎回手動で移動させてる様な物なので余り恩恵が無いですが、 これを

$ rake generate_onnly[2013-01-01-a.md]

と言うコマンドで isolategenerateintegrate と1つのコマンドで出来たら便利だと思います。

実は、このコマンドはベータバージョンのOctopress-2.1の時に 一度加えられてたのですが 1、 現在のベータバージョンのOctopress-2.5では外されています。

ただし、現在もsite-2.1というブランチや commanderと言うブランチ (このブランチにはより沢山のコマンドが入ってます) に残っています。

これを参考に、previewwatchもついでに加えてみます。

こんな感じで。1つ注意が必要なのは、古いRakefileだとisolateの所で stash_dirを自分自身で上書きしてしまうので、 そのままだとisolate後にintegrate使用としてもファイルが見つからずに 元に戻りません 2

なので、上のようにfull_stash_pathと言う変数を加えて isolate/integraeteの中では直接それを使うようにします。

これで、上のrake generate_onlyに加えてpreview_only/watch_onlyも使える様になります。

ただし、この場合も、実際に生成されてるサイトは指定されたポストオンリーの サイトになっているので、deployする前に必ずgenerateするか、 gen_deployで確実にintegrateした状態で生成、配置する必要があるので注意が必要です。

追加ページだけコンパイル?

上の方法は新しいポストを確認する際や、ちょっとcss等をいじった際に 高速にチェックする方法ですが、最終的に配置する前には 全体で再生成し直す必要が有ります。

実際に構築するJekyllコマンドのオプションを見ても一部だけ 生成するようなオプションが見当たらないので、今のところどうしようもないのかも。。。

適当にpublicディレクトリを消してから生成しなおしたり、何も変更しないまま 再生成しても時間的には変わらなかったので、結局毎回全部生成し直してる様。

もしかしたら何か方法があるのかもしれませんが、無いのであれば 今後のJekyllのアップデートを期待。

追記: 2013/12/23

generate_only周りの追記。

Octopressのgenerate_onlyをモット便利に

Octopressのgenerate_onlyをモット便利に2

追記ここまで

Sponsored Links
Sponsored Links

« GistのURLが変わった MarkdownのパーサーをKramdownへ変更 »