Re: Qudo をためしてみた

http://d.hatena.ne.jp/tokuhirom/20100322/1269250840

良くない点について考えてみた。


ドキュメント

ないですね。これは人に使ってもらおうとするレベルではないので何とかしたいところ。


ワーカークラスをよみこまないと、クライアントが動作しないっぽい?

動作しません。
現在のQudoではworker毎にHookを設定できるためです。
クライアントがenqueueするときにworkerに設定されているHookを呼び出す必要があるため
現在のところクライアント側でワーカークラスを読み込む必要があります。

ただし、enqueueするのに重いworkerを読み込む必要があるのは
決定的に良くないので対処したいところ。

Hookを分けるためだけなので、クライアントを分けて管理できればいいだけなので
woker毎にHookを設定できなくても対処できるのでとりあえずはそうするかも。


ワーカークラスの登録を ->new 以外でやる方法がわからない

qudoのワーカーを動かすには以下のようにします。
この時のmanager_abilitiesにこのワーカーで動作させるワーカークラスを指定しています。

my $qudo = Qudo->new(
    databases => [+{
        dsn      => 'dbi:SQLite:/tmp/qudo.db',
        username => '',
        password => '',
    }],
    manager_abilities => [qw/Worker::Test/],
);
$qudo->work();

今回の指摘ではnewする時だけしかmanager_abilitiesを設定できないと使い勝手が悪いという話でした。
これは

my $qudo = Qudo->new(
    databases => [+{
        dsn      => 'dbi:SQLite:/tmp/qudo.db',
        username => '',
        password => '',
    }],
    manager_abilities => [qw//],
);
$qudo->manager->can_do('Worker::Test')
$qudo->work();

manager->can_doで動かすworkerを後で設定できるので問題は回避できると思います。


ということで、久々にQudoについて考えたのであった。
いろいろと指摘ありがとう。


(追記)
とりあえずWorkerでHookを指定する機能は外しました。
ドキュメントはぼちぼち。。。