log.randomly

技術的なあれこれ

Tinkerer と GitHub ではじめる Sphinx blog

sphinx を使い始めてブログも sphinx で書けたらいいのになと思っていたところに tinkerer がリリースされました。このブログも tinkerer で作成されています。

今回は tinkerer でブログを作成して github で公開する方法を紹介します。

参考: Tinkererを使ってbitbucketでblogはじめました - そこはかとなく書くよ。

セットアップ

インストールはいつものように pip で。

$ pip install tinkerer

Note

0.2.1b 以下のバージョンは日本語を扱えないので新しいバージョンを入れましょう。pull request を出したら採用してもらえました :)

ブログを書くためのディレクトリを作成して、環境を作ります。

$ mkdir -p ~/blog/sources
$ cd ~/blog/sources
$ tinker --setup

conf.py という設定ファイルの雛形が作成されるので、適宜変更してやります。日本語は u'' を使って unicode で書かないとビルドできないので注意しましょう。

project = u'<ブログ名>'
tagline = u'<サブタイトル>'
author = u'<名前>'
copyright = u'2012, ' + author
website = u'http://<account>.github.com/blog/'

ブログを書く

それでは実際にブログエントリを作成しましょう。

以下のコマンドを実行して新しいエントリを追加します。

$ tinker -p 'first post'
New post created as '/Users/.../blog/2012/02/21/first_post.rst'

-p オプションにはタイトルを指定しますが、日本語を入れると嬉しくないことが起きます。この名前がそのまま url になるのでファイル名を入れるイメージがちょうどいいです。

作成されたファイルのパスが表示されるので、これをエディタで開いて編集しましょう。

$ vim 2012/02/21/first_post.rst

編集したらビルドして確認しましょう。

$ tinker -b
$ open index.html

公開する

blog を静的に作成できるようになったので後は github で公開するだけです。

github で公開するに当たって、ソースごと全て公開するか生成後の HTML だけ公開するかを選択する必要があります。今回は、生成後の HTML だけ公開することにします。

tinkerer はビルド時に出力先を削除して作り直すため、blog/html に git リポジトリを作成しても意味がありません。そのため、公開用のリポジトリを別に作成し、そこにコピーするようにします。

ブラウザで github にアクセスして blog リポジトリを作成してください。

公開用の git リポジトリを作成します。

$ mkdir ~/blog/publish
$ cd ~/blog/publish
$ git init
$ git checkout -b gh-pages
$ git remote add origin git@github.com:<account>/blog.git

標準では Jekyll サポートのため _ (underscore) から始まるディレクトリを使用できません。このままだと困るので Jekyll サポートを無効化するためのファイルを作成します。

$ touch .nojekyll

ビルド済みの html をコピーします。

$ rsync -av ~/blog/sources/blog/html/ .

追加、コミットし、github にプッシュします。

$ git add .
$ git commit -m 'first post'
$ git push -u origin gh-pages

反映されるまで 10 分程かかるようなので、しばらくしてから確認しましょう。

これで http://<account>.github.com/blog/ という url でブログができるようになりました。

追記

2012/04/14
公開用リポジトリで使用するブランチを master から gh-pages に変更しました。