ウェブプログラミングの最終調整段階では、コードを少し書いてブラウザで動作を確認するという作業を何回も繰り返します。私の場合は、「Emacsでコードを書く→rsyncでファイルをサーバにアップロードする→ブラウザで動作を確認する→再びEmacsに戻る・・・」といった動作を10秒間隔で繰り返してたりします(もちろんちゃんと測ったわけではありませんが)。簡単な動作でも膨大に繰り返す作業は自動化できると生産性が向上します。そこで、ディレクトリ内のファイルを監視して変更があればコマンドを実行するという簡単なRubyスクリプトを書きました。名前は、UNIXのwatchコマンドにあやかってwatchdirにしました。
インストールとダウンロード
スクリプトのダウンロードは下記からどうぞ。
このwatchdir.rbをwatchdirにリネームしてchmod +x watchdirしてPATHの通っているディレクトリにでも放り込んで下さい。以下、この通りインストールされた前提で説明します。
コマンドオプション
watchdir –helpをすると簡単な説明を表示します。
利用例
- 監視するファイルを拡張子で限定する
watchdir -e html,jpeg,gif,png -c “echo ‘updated!’ “
- symfony syncを自動化(symfony開発者向け)
watchdir -c “symfony sync stage1 go”
- symfony ccを自動化
プロジェクトに対して
watchdir -e class.php -d lib -c “symfony cc”
各アプリケーションに対して
watchdir -e class.php -d apps/myapp/lib -c “symfony cc myapp”
私はwatchdirをEmacsのauto-save-buffer.elと併用して使っています。つまり、0.5秒キー入力をサボると自動的にバッファがセーブされファイルが更新されます、そして2秒毎にwatchdirの監視に引っかかりrsyncを実行します。このため、私の開発環境から発せられるrsyncの数は尋常ではありません。ひと昔前なら壮大な無駄の上に成り立つ生産性は認められず、こんなスクリプト使った日には周りから非難をうけたものでした。最近はマシンスペックも十分高くなりネットワーク負荷もある程度許容される良い時代になったと思います。この方法を使い始めてからrsyncのために行動する必要がなくなり、本来の仕事により集中できるようになりました。

コメント / トラックバックはありません
コメントする