nanoc 2.1.3 でページを作る
経緯
nanoc が 2.1 になって仕様がいくらか変わったのか、nanoc のコンパイルをするときに警告が出るようになった。 せっかくうまく使えるようになったのにドキュメントを読むのは面倒なのだが、変更された部分を見ると私が欲しかった機能が実装されたようだ。 それならば話は別で、はじめからサイトを作ってみて、新しいバージョンになれることにした。
以下の文書は、Ubuntu 8.04 で実行されたもので、nanoc は rubygems でインストールされたバージョン 2.1.3 を使っています。
nanoc とは
nanoc は、Ruby で書かれた CMS (content management system) の一種。 CMS といって思い浮かぶ wiki や blog は、サーバで動かすものなのだが、nanoc は自分の PC で使用する。 nanoc では、本文や設定の書いたファイルを作り、それをコンパイルしてブラウザが解釈する HTML を作り出す。 基礎知識がほとんどない人でも簡単にページを作成できるわけではなく、HTML や CSS についての知識は必要だろう。
HTML を Emacs などで編集してページを作っていると、 ページのレイアウトは本文とは切り離したいとか、 ほぼ同じ内容なのだけれどもページによってある規則で一部を変更したい部分があったりする。 レイアウトについては、nanoc の仕様が本文とレイアウトを切り離すようになっている。 また、ある規則を適用したい場合は、nanoc のコンパイルをするときに Ruby を使って HTML の内容を変えることができる。 他の nanoc の利点としては、サーバの条件(CGI が動かせるなど)は何もないということだろう。 コンパイルをして HTML を作った後は、ただの HTML をサーバにアップするだけだから。
サイトの設定
ディレクトリを作成
nanoc create_site site_dir
でサイトを作り、できたディレクトリにある config.yaml で設定する。 site_dir は自分の好きな名前にする。
config.yaml
デフォルトでは
output_dir: "output"
data_source: "filesystem"
router: "default"
のようになっていた。このままでは、hoo.html を作りたくても
nanoc create_page hoo
とすると hoo/index.html になってしまう。 これを回避するには router の項目を “no_dirs” とすればよいようだ。 また、output ディレクトリにコンパイルされたファイルが作成されるのだが、 出力先を変更したければ output_dir の項目を変える。 私は、
output_dir: "output"
data_source: "filesystem"
router: "no_dirs"
のように設定した。
コンパイルとページの追加
まず、コンパイル
上の「ディレクトリの作成」で、作られた site_dir に cd で移動し、
nanoc compile
とする。output に html ファイルがコンパイルで作られている。
ページの追加
nanoc create_page page_name
とすれば、page_name.html に対応する nanoc のファイルが content ディレクトリに作られる (router に no_dirs を設定し、後はデフォルトの場合には)。 ページをディレクトリのしたに作りたければ、
nanoc create_page dir/page_name
のようにする。