Home > 仕事のこと > Moose と Mouse と QueueQ4M(0.00017)

Moose と Mouse と QueueQ4M(0.00017)

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 さん

ありがとうございます。
すっごい動いてます。

Comment Form

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 日々のこと

Home > 仕事のこと > Moose と Mouse と QueueQ4M(0.00017)

Search
Feeds

Return to page top