- 2009年4月 8日 17:22
- 仕事のこと
Moose が 0.74 になったのに併せて Class::MOP が 0.81 になって今まで警告なしに動いていたスクリプトで警告が出るようになった。
The compute_all_applicable_attributes method has been deprecated. Use get_all_attributes instead.
at /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/Class/MOP/Class.pm line 929
Class::MOP::Class::compute_all_applicable_attributes('Class::MOP::Class::__ANON__::SERIAL::41=HASH(0x8a0b850)') called at /usr/lib/perl5/site_perl/5.8.8/Data/Visitor/Callback.pm line 42
Data::Visitor::Callback::BUILDARGS('Data::Visitor::Callback', 'plain_value', 'CODE(0x9c09398)') called at generated method (unknown origin) line 4
Data::Visitor::Callback::new('Data::Visitor::Callback', 'plain_value', 'CODE(0x9c09398)') called at /home/travail/public_html/SVNHOME/Shiori/bin/utils/shiori/../../../lib/Shiori/ConfigLoader.pm line 86
Shiori::ConfigLoader::load('Shiori::ConfigLoader=HASH(0x9bf1c50)') called at /home/travail/public_html/SVNHOME/Shiori/bin/utils/shiori/../../../lib/Shiori/ConfigLoader.pm line 33
Shiori::ConfigLoader::new('Shiori::ConfigLoader') called at /home/travail/public_html/SVNHOME/Shiori/bin/utils/shiori/../../../lib/Shiori/DateTime.pm line 44
Shiori::DateTime::now('Shiori::DateTime') called at /home/travail/public_html/SVNHOME/Shiori/bin/utils/shiori/../../../lib/Shiori/Schema/Tag.pm line 162
Shiori::Schema::Tag::update_shiori_count('Shiori::Schema::Tag=HASH(0x9c0a634)') called at /home/travail/public_html/SVNHOME/Shiori/bin/utils/shiori/../../../lib/Shiori/Schema/Shiori.pm line 260
Shiori::Schema::Shiori::create_tags('Shiori::Schema::Shiori=HASH(0x9bf15d8)') called at /home/travail/public_html/SVNHOME/Shiori/bin/utils/shiori/../../../lib/Shiori/API/Shiori.pm line 97
Shiori::API::Shiori::__ANON__() called at /usr/lib/perl5/site_perl/5.8.8/DBIx/Class/Storage/DBI.pm line 626
DBIx::Class::Storage::DBI::txn_do('DBIx::Class::Storage::DBI::mysql=HASH(0x9a341c4)', 'CODE(0x9a35620)') called at /usr/lib/perl5/site_perl/5.8.8/DBIx/Class/Schema.pm line 734
DBIx::Class::Schema::txn_do('Shiori::Schema=HASH(0x9a4c4d4)', 'CODE(0x9a35620)') called at /home/travail/public_html/SVNHOME/Shiori/bin/utils/shiori/../../../lib/Shiori/API/Shiori.pm line 110
eval {...} called at /home/travail/public_html/SVNHOME/Shiori/bin/utils/shiori/../../../lib/Shiori/API/Shiori.pm line 110
Shiori::API::Shiori::update('Shiori::API::Shiori=HASH(0x9a216e0)', 'HASH(0x9b39534)') called at ./update.pl line 24
main::main() called at ./update.pl line 11
出力された警告の3行目を見ると
Class::MOP::Class::compute_all_applicable_attributes('Class::MOP::Class::__ANON__::SERIAL::41=HASH(0x8a0b850)') called at /usr/lib/perl5/site_perl/5.8.8/Data/Visitor/Callback.pm line 42
と言われる。
素直に Data::Visitor::Callback の42行目あたりを覗いてみると BUILDARGS の中で compute_all_applicable_attributes をコールしている。
sub BUILDARGS {
my ( $class, @args ) = @_;
my $args = $class->SUPER::BUILDARGS(@args);
# ここね
my %init_args = map { $_->init_arg => undef } $class->meta->compute_all_applicable_attributes;
my %callbacks = map { $_ => $args->{$_} } grep { not exists $init_args{$_} } keys %$args;
Class:MOP の 0.80_01 の Changes で
- compute_all_applicable_attributes is deprecated, use get_all_attributes
となっている。
Data::Visitor の AUTHOR の Yuval は Class::MOP の CONTRIBUTOR だからそのうち直る。って言うか、Class::MOP は IRC ないのか?
追記
じゃ、42行目の
$class->meta->compute_all_applicable_attributes;
を
$class->meta->get_all_attributes;
に変更したらいいのかと言うとそうわけでもなく、Data::Visitor::Callback では Squirrel で Moose と Mouse の切り分けを行っていて Moose を使用していた場合は get_all_attributes でいいのだけれど、Mouse を使用していた場合は見事に
Can't locate object method "get_all_attributes" via package "Mouse::Meta::Class"
でコケる。
追追記Can't locate object method "get_all_attributes" via package "Mouse::Meta::Class"
は Mouse を 0.20 にすると解決する。
Comments:2
- tokuhirom 2009年4月 8日 18:41
#moose@irc.perl.org です。see also http://moose.perl.org/
tokuhirom the moose comitter
- ちわ 2009年4月 8日 22:05
> tokuhirom さん
Class::MOP の話は Moose の方でするんですね。
今回の警告は Class::MOP 側ではなくて Data::Visitor 側なので
Yuval に連絡取りたかったんですよ。
とりあえず、Yuval には別途パッチを送っておきました。(たいしたパッチではないですけれど)
ありがとうございます。
Trackbacks:0
- TrackBack URL for this entry
- http://hibinokoto.jp/mt/mt-tb.cgi/310
- Listed below are links to weblogs that reference
- Class::MOP(0.81) と Data::Visitor::Callback(0.22) で警告 from 日々のこと