Qudoのarg引数にハッシュを渡したい
以下のようなコードを書きまして、Qudoのarg引数にハッシュを渡したい
#!/usr/bin/env perl use strict; use warnings; use Qudo; use FindBin; use lib "$FindBin::Bin/../lib"; my $qudo = Qudo->new( driver_class => 'Skinny', # optional. databases => [+{ dsn => 'dbi:SQLite:./qudo.db', username => '', password => '', }], ); for my $index (1 .. 100){ $qudo->enqueue("Worker::Test", { arg => {name=>'hello'. $index}}); } ;
実行すると以下のようなエラーになるのです。
$ ./script/enqueue.pl @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@ DBIx::Skinny 's Exception @@@@@ Reason : you can't set bind value, arrayref or scalar. you set HASH ref value. at /usr/lib/perl5/site_perl/5.14/DBIx/Skinny.pm line 553. SQL : INSERT INTO job (`priority`, `enqueue_time`, `arg`, `retry_cnt`, `grabbed_until`, `run_after`, `uniqkey`, `func_id`) VALUES (?, ?, ?, ?, ?, ?, ?, ?) BIND : $VAR1 = [ 0, 1391121007, { 'name' => 'hello1' }, 0, 0, 1391121007, undef, 1 ]; @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ at /usr/lib/perl5/site_perl/5.14/Qudo/Manager.pm line 164.
ずっど避けていた(スカラーでなんとかしていた)んですが、 さて、どうしよう。
<<TODO>> [Qudo::Manual::JA] (http://search.cpan.org/~nekokak/Qudo-0.01_01/lib/Qudo/Manual/JA.pod)
$qudo->global_register_hooks('Qudo::Hook::Serialize::JSON');
追加して実行したけどなんか動かない。
Can't locate object method "global_register_hooks" via package "Qudo" at ./script/enqueue.pl line 15.
結局、参照していたドキュメントが古かったw shiba_yu36さんのブログを参照してやり方がわかりました。 default_hooksをnewで渡せば良かったんですね。
Qudo, daemontools, capistranoを使ってWorker処理の仕組みを作る
my $qudo = Qudo->new( driver_class => 'Skinny', # optional. databases => [+{ dsn => 'dbi:SQLite:./qudo.db', username => '', password => '', }], default_hooks => ["Qudo::Hook::Serialize::JSON"] );
最新のドキュメント [Qudo::Manual::JA::Function] (https://metacpan.org/pod/Qudo::Manual::JA::Function) でも、「register_hooks」が残存していたので、Pull Requestを送ってみようとおもう。