以前、ログをトレースしながらautotestを走らせる方法を紹介しましたが、
今回はさらにその方法を拡張して、script/consoleも同時に実行してしまう
方法を紹介します。

ちなみに以前紹介した方法は、こんな感じでした。

% tail -f log/development.log &
% autotest

tail -f log/development.log &でloggerの出力をバックグラウンドで補足しつつ、フォアグラウンドではautotestを実行しています。

今回は、autotestもさらにバックグラウンドで起動させて、
フォアグラウンドで./script/consoleを実行させるのですが、
一つ問題があります。

autotestは、migrationの実行などでDBの中身が変わった場合など、
Ctrl+CでINTを送ってリロードさせる必要があるのですが、
バックグラウンドプロセスにしてしまうと、Ctrl+Cでリロード
できなくなってしまいます。

そこで、autotestのリロードを script/consle の中から行えるように
するプラグインを作りました。

インストール方法は、通常のRailsプラグインと同様です。

% ./script/plugin install http://svn.s21g.com/public/rails/plugins/trident/

使い方は、モニタリング用のコンソールから以下のRakeタスクを実行します。

% rake trident

すると、tail -f log/development.logautotestが実行され、
script/consoleが立ち上がります。

この状態で、autotestをリロードさせる場合、script/consoleから

> Trident.reload

を実行すればOKです。

終了するときは、普通にscript/cosoleexitすると、生成された子プロセスと一緒に終了します。

posted by genki genki on Fri 16 Nov 2007 at 10:54 with 0 comments