- 2009年2月22日 23:24
- 仕事のこと
Queue::Q4M をバージョン 0.00017 にアップグレードしたら 0.00016 まで動いていたスクリプトが動かなくなった。
- Any::Moose - 0.04
- Moose - 0.71
- Mouse - 0.17
- Queue::Q4M - 0.00017
Queueu::Q4M を実際に使ってるプロジェクトではモジュール化してしまってデバッグがちょこっとしずらいので、簡単なスクリプトを書いてみる。
ちなみに、そのプロジェクトでは Moose も Mouse も使っていないので use Queue::Q4M より先に Moose なり Mouse なりがロードされていることはない。
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
#use Moose;
#use Mouse;
use Queue::Q4M;
our $table = 'queue_export';
main();
exit;
sub main {
my $q4m = Queue::Q4M->connect(
connect_info => [
'dbi:mysql:dbname=shiori_local;host=192.168.1.1;port=3308',
'username', 'password'
]
);
while ( $q4m->next($table) ) {
my $queue = $q4m->fetch_hashref( $table,
[qw(created_on member_id type)] );
warn Dumper($queue);
}
}
こんなコードを実行してキューを入れてみると
[travail@mina]~% ./queue_export.pl
Attribute (__res) does not pass the type constraint because: Validation failed for 'Maybe[Queue::Q4M::Result]' failed with value Queue::Q4M::Result=ARRAY(0x9c32cac) at /usr/lib/perl5/site_perl/5.8.8/Mouse/Meta/Attribute.pm line 339
Mouse::Meta::Attribute::verify_type_constraint_error('Mouse::Meta::Attribute=HASH(0x9c058b0)', '__res', 'Queue::Q4M::Result=ARRAY(0x9c32cac)', 'Maybe[Queue::Q4M::Result]') called at (eval 18) line 5
Mouse::Meta::Attribute::__ANON__('Queue::Q4M=HASH(0x9be2978)', 'Queue::Q4M::Result=ARRAY(0x9c32cac)') called at /usr/lib/perl5/site_perl/5.8.8/Queue/Q4M.pm line 159
Queue::Q4M::next('Queue::Q4M=HASH(0x9be2978)', 'queue_export') called at ./queue_export.pl line 22 main::main() called at ./queue_export.pl line 12
なんてエラーが出てきちゃう。0.00016 までは動いていたのになぁ。
0.00017 の Changes を見てみると
0.00017 - 20 Feb 2009 - s/Squirrel/Any::Moose/g
Moose, Mouse の切り替えを Any::Moose に変えたみたい。
ということで、さっきのスクリプトの "use Moose", "use Mouse" のコメントアウトを順番にはずして試してみると、"use Moose" されているときはスクリプトが動いて、"use Mouse" されているときは動かない。
Queue::Q4M - 0.00016 の場合
- 明示的に Moose, Mouse をロードしていない場合でも動く
- 明示的に Moose をロードしている場合でも動く
- 明示的に Mouse をロードしている場合でも動く
Queue::Q4M - 0.00017 の場合
- 明示的に Moose, Mouse をロードしていない場合は動かない
- 明示的に Moose をロードしている場合は動く
- 明示的に Mouse をロードしている場合でも動かない
この結果は Mouse を 0.16 に下げても同じだったし、Any::Moose を 0.03 に下げてもだめだった。
と言うか、Queue::Q4M のインストールで DB につなぎにいかないでインストールしてたんですよね。面倒なので。
改めて DB つないでテストしてみたら同じエラーがちゃんと出てた。テストがちゃんと書かれててもインストールする側がちゃんと実行しなけりゃ意味ないですね。ごめんなさい、ごめんなさい。
Comments:2
- lestrrat 2009年3月 1日 09:00
このエントリに今気づきました。
0.00018は大丈夫でしょうか。- ちわ 2009年3月 2日 16:11
> lestrrat さん
ありがとうございます。
すっごい動いてます。
Trackbacks:0
- TrackBack URL for this entry
- http://hibinokoto.jp/mt/mt-tb.cgi/308
- Listed below are links to weblogs that reference
- Moose と Mouse と QueueQ4M(0.00017) from 日々のこと