Subject: | Moose warning: Attribute has no associated methods |
Thanks for Net::Twitter! It's very handy.
I've noticed something odd happening with the latest Net::Twitter and
Moose. It's a little annoying, but not fatal. My programs are still
working okay after the error message is displayed.
WHAT HAPPENS: I have two systems set up. On one system, as soon as I
"use Net::Twitter", Moose throws an error: 'Attribute (_trait_namespace)
of class Net::Twitter has no associated methods (did you mean to provide
an "is" argument?)'. The error is displayed on STDERR. After the error
is displayed, the program continues to run normally. I can reduce the
program down to just the "use" statement, and the error is still displayed.
The problem *does* happen on a freshly installed system, with
Net::Twitter 3.03000 and Moose 0.85. It does *not* happen on a somewhat
older system with Net::Twitter 3.01000 and Moose 0.81.
WHAT I EXPECTED INSTEAD: No runtime errors.
CONTEXT:
system (same for both): Ubuntu 8.10 (intrepid)
perl version (same for both): v5.10.0 built for i486-linux-gnu-thread-multi
CPAN distribution: Net::Twitter 3.03000 and Moose 0.85 (and all other
module dependencies; everything installed via CPAN.pm shell)
Execute a program with the following:
#!/usr/bin/perl
use Net::Twitter;
Resulting stack trace:
Attribute (_trait_namespace) of class Net::Twitter has no associated
methods (did you mean to provide an "is" argument?)
at /usr/local/share/perl/5.10.0/Moose/Meta/Attribute.pm line 565
Moose::Meta::Attribute::_check_associated_methods('Moose::Meta::Attribute=HASH(0xa5af160)')
called at /usr/local/share/perl/5.10.0/Moose/Meta/Class.pm line 253
Moose::Meta::Class::add_attribute('Moose::Meta::Class=HASH(0xa2d00e8)',
'_trait_namespace', 'default', 'Net::Twitter::Role',
'definition_context', 'HASH(0xa593cf8)') called at
/usr/local/share/perl/5.10.0/Moose.pm line 68
Moose::has('Net::Twitter', '_trait_namespace', 'default',
'Net::Twitter::Role') called at
/usr/local/share/perl/5.10.0/Moose/Exporter.pm line 320
Moose::has('_trait_namespace', 'default', 'Net::Twitter::Role')
called at /usr/local/share/perl/5.10.0/Net/Twitter.pm line 8
require Net/Twitter.pm called at ./foo.pl line 2
main::BEGIN() called at
/usr/local/share/perl/5.10.0/Net/Twitter.pm line 0
eval {...} called at /usr/local/share/perl/5.10.0/Net/Twitter.pm
line 0
Please let me know if I can provide more information, or if I'm just
making a dumb mistake.
Best regards,
Pete