[Catalyst] Class data in a Moose::Role plugin
Bill Moseley
moseley at hank.org
Mon Aug 31 02:15:21 GMT 2009
I also tried with Catalyst::ClassData. Must be missing something.
All modules up to date. On Perl 5.10.0.
$ catalyst.pl MyApp
$ cat lib/Catalyst/Plugin/Role.pm
package Catalyst::Plugin::Role;
use Moose::Role;
use MooseX::ClassAttribute;
class_has 'Cache' =>
( is => 'rw',
isa => 'HashRef',
default => sub { {} },
);
1;
$ script/myapp_server.pl
Could not load class (Catalyst::Plugin::Role) because :
Catalyst::Plugin::Role already has a metaclass, but it does not
inherit Moose::Meta::Class (Moose::Meta::Role=HASH(0xa38ff10)) at
/usr/local/share/perl/5.10.0/Moose.pm line 162
Moose::init_meta('Moose', 'metaclass', undef, 'for_class',
'Catalyst::Plugin::Role') called at
/usr/local/share/perl/5.10.0/MooseX/ClassAttribute.pm line 22
MooseX::ClassAttribute::init_meta('MooseX::ClassAttribute',
'for_class', 'Catalyst::Plugin::Role', 'metaclass', undef) called at
/usr/local/share/perl/5.10.0/Moose/Exporter.pm line 405
Moose::Exporter::__ANON__('MooseX::ClassAttribute') called at
/home/moseley/MyApp/script/../lib/Catalyst/Plugin/Role.pm line 3
Catalyst::Plugin::Role::BEGIN() called at
/usr/local/share/perl/5.10.0/MooseX/ClassAttribute.pm line 3
eval {...} called at
/usr/local/share/perl/5.10.0/MooseX/ClassAttribute.pm line 3
require Catalyst/Plugin/Role.pm called at
/usr/local/lib/perl/5.10.0/Class/MOP.pm line 134
eval {...} called at /usr/local/lib/perl/5.10.0/Class/MOP.pm line 134
Class::MOP::_try_load_one_class('Catalyst::Plugin::Role')
called at /usr/local/lib/perl/5.10.0/Class/MOP.pm line 95
Class::MOP::load_first_existing_class('Catalyst::Plugin::Role')
called at /usr/local/lib/perl/5.10.0/Class/MOP.pm line 140
Class::MOP::load_class('Catalyst::Plugin::Role') called at
/usr/local/share/perl/5.10.0/Catalyst.pm line 2563
Catalyst::setup_plugins('MyApp', 'ARRAY(0xa2d1598)') called at
/usr/local/share/perl/5.10.0/Catalyst.pm line 1028
Catalyst::setup('MyApp') called at
/home/moseley/MyApp/script/../lib/MyApp.pm line 35
require MyApp.pm called at script/myapp_server.pl line 66
main::__ANON__() called at script/myapp_server.pl line 107
BEGIN failed--compilation aborted at
/home/moseley/MyApp/script/../lib/Catalyst/Plugin/Role.pm line 3.
Compilation failed in require at
/usr/local/lib/perl/5.10.0/Class/MOP.pm line 134.
at /usr/local/lib/perl/5.10.0/Class/MOP.pm line 119
Class::MOP::load_first_existing_class('Catalyst::Plugin::Role')
called at /usr/local/lib/perl/5.10.0/Class/MOP.pm line 140
Class::MOP::load_class('Catalyst::Plugin::Role') called at
/usr/local/share/perl/5.10.0/Catalyst.pm line 2563
Catalyst::setup_plugins('MyApp', 'ARRAY(0xa2d1598)') called at
/usr/local/share/perl/5.10.0/Catalyst.pm line 1028
Catalyst::setup('MyApp') called at
/home/moseley/MyApp/script/../lib/MyApp.pm line 35
require MyApp.pm called at script/myapp_server.pl line 66
main::__ANON__() called at script/myapp_server.pl line 107
Compilation failed in require at script/myapp_server.pl line 66.
With Catalyst::ClassData:
moseley at bumby2:~/MyApp$ cat lib/Catalyst/Plugin/Role.pm
package Catalyst::Plugin::Role;
use Moose::Role;
use Catalyst::ClassData;
__PACKAGE__->mk_classdata( 'foo' );
1;
moseley at bumby2:~/MyApp$ script/myapp_test.pl /
Could not load class (MyApp) because : Could not load class
(Catalyst::Plugin::Role) because : Can't locate object method
"mk_classdata" via package "Catalyst::Plugin::Role" at
/home/moseley/MyApp/script/../lib/Catalyst/Plugin/Role.pm line 5.
Compilation failed in require at
/usr/local/lib/perl/5.10.0/Class/MOP.pm line 134.
...
--
Bill Moseley
moseley at hank.org
More information about the Catalyst
mailing list