tokuhirom's Blog

Proc::Guard - サーバープロセスを起動するライブラリ

http://frepan.64p.org/~tokuhirom/Proc-Guard-0.01/lib/Proc/Guard.pm

テストなどで memcached やら ttserver やら gearmand やらを起動するにあたって、サーバープロセスを起動するとかいった場合に、サーバーの種類ごとにライブラリを書くのも馬鹿馬鹿しいので、起動する部分だけを抽象化してみたという話。主にテストでつかう用途を想定している。

たとえば、memcached の起動部分は以下のようにかくことができる。$proc が消滅した時点で、memcached のプロセスは消滅する(by DESTROY())。

    use Test::TCP qw/empty_port wait_port/;
    use File::Which qw/which/;
    use Proc::Guard;

    my $port = empty_port();  # あいてるポートをさがす
    my $proc = proc_guard(scalar which('memcached'), '-p', $port); # プロセスを起動する
    wait_port($port); # ポートがひらくまでまつ

    # your code here

シンプルなモジュールのくみあわせでかいた方が小回りがきいて好きだなあと思う今日この頃です。

【追記】
http://d.hatena.ne.jp/lesamoureuses/20100721/1279690992 を参考に scalar かますようにしました。thanks.