at posts/single.html

gist でちょっとしたコードをバージョン管理

hsbt さんとこgist というサービスを使ってパッチを埋め込んでいるのを見かけて、これは便利そうだと思った。

  • git ベースなのでもちろん履歴をバージョン管理してくれる
  • github と同じように他人のコードも fork (自分の領域にコピー) できる
  • gist に載せたコードは他のサイトに埋め込むことができる

これって Wiki のソースコード版に近いかな。

試しに、標準 ERB と Erubis の挙動の違いを実験したときのコードを gist にアップして、この日記に埋め込んでみた。 これなら、日記に pre でコードを埋め込む代わりになりそう。

簡単な使い方

gist のトップページにアクセスすると、いきなりテキストボックスが表示される。 管理したいコードをテキストボックスに貼り付けて、「Paste」ボタンを置けばOK。 http://gist.github.com/43820 のように、通し番号が付いた URL が割り当てられる。 この URL にアクセスすることで、コードを表示したり修正したりできる。

1つのファイルごとに1つのURLが割り振られるので、 GitHub よりもシンプル。 複数のファイルを管理したいときは GitHub を使って、1つのファイルの時は Gist を使うのがよさそう。 例えば設定ファイルとか。

日記に埋め込む

gist に載せたコードは、他のサイトへ埋め込むことができる。 埋め込みコードも以下のようにシンプル。

<script src="http://gist.github.com/43820.js"></script>

tDiary では kakutani さんが gist プラグインを作られているので、簡単に埋め込むことができる。

ただ、 JavaScript のロードが完了するまで、描画が止まるので多用しないほうがいいかも。

Gisty を使って Gist へ簡単にアップロードする

Web から Gist を使ってもいいけど、ローカルのファイルと同期できるともっと便利。 Gisty というコマンドラインのツールを使うと、ローカルのファイルを簡単に Gist へアップロードできるようになる。 手順や使い方は Gisty のサイトのとおり。 一応、ここにも記録を残しておく。

インストール

インストールには gem を使う。

gem sources -a http://gems.github.com

sudo gem install nokogiri
sudo gem install swdyh-gisty

初期設定

git コマンドを使ってサーバにアクセスするために、初期設定が必要。

  • API Token の取得 … GitHub のアカウントページで Username と API Token を確認する。
  • 公開鍵の登録 … ローカルで生成した公開鍵を GitHub のサイトへ登録する。(本人の認証に使用する)

公開鍵はローカル環境の $HOME/.ssh/id_dsa.pub に存在する。 RSA鍵を使っている場合は id_rsa.pub かも。 .pub が付かない id_dsa は秘密鍵なので、登録しちゃダメ。

まだ鍵を作っていない場合は、 ssh-keygen コマンドで作ることができる。

環境変数の設定

gist に登録したファイルをローカル環境にコピーする先のディレクトリを GISTY_DIR 環境変数として指定する。 僕は .zshrc と .bashrc の最終行に、以下のように書いておいた。

export GISTY_DIR=$HOME/work/gisty

ファイルの登録

gist で管理したいファイルを選んで、 gisty post コマンドを実行すれば OK. gist に登録されたファイルは、 GISTY_DIR 環境変数で指定したディレクトリにもコピーされる。

GitHub を使うのはちょっと…と言うときに、 Gist は活躍できそう。

追記

gisty post コマンドの実行時に 401 エラーが返される場合は、 gist との認証に失敗している。 アカウントページで公開鍵 (SSH Public Keys) を正しく設定しているかを確認すること。

関連する日記