http://www.perlmonks.org?node_id=1017830


in reply to Re^4: Net::Twitter - fatal , but no error?
in thread Net::Twitter - fatal , but no error?

It's claiming that roles don't support array references for around method modifiers... i.e. Moose stuff. It's saying that this doesn't work...

use v5.14; package Local::Role { use Moose::Role; around [qw/ a b /] => sub { say "constant access" }; } package Local::Class { use Moose; with 'Local::Role'; use constant { a => 1, b => 2 }; } # Should print "constant access" twice Local::Class->a; Local::Class->b;

On my machine, the above does work though, so it's likely that you're running a very old Moose/Class::MOP. Judging from Moose::Manual::Delta this may have been introduced in Moose 0.95; current version is 2.0604.

package Cow { use Moo; has name => (is => 'lazy', default => sub { 'Mooington' }) } say Cow->new->name

Replies are listed 'Best First'.
Re^6: Net::Twitter - fatal , but no error?
by ultranerds (Hermit) on Feb 08, 2013 at 15:02 UTC
    Ah - maybe its an old version of Moose then. I've emailed my host to check up.

    Cheers

    Andy
      Mmm, well they upgraded it, but now I get:
      <p><font face='Tahoma,Arial,Helvetica' size=2>A fatal error has occure +d:</font></p><blockquote><pre>Attribute (aliases) does not pass the t +ype constraint because: Validation failed for &#039;ArrayRef[Str]&#03 +9; with value ARRAY(0x21b92a8) at /usr/lib64/perl5/vendor_perl/5.10.1 +/x86_64-linux/Moose/Meta/Attribute.pm line 1274 Moose::Meta::Attribute::verify_against_type_constraint(&#039;M +oose::Meta::Attribute=HASH(0x1c82350)&#039;, &#039;ARRAY(0x21b92a8)&# +039;, &#039;instance&#039;, &#039;Net::Twitter::Meta::Method=HASH(0x2 +1b8d08)&#039;) called at /usr/lib64/perl5/vendor_perl/5.10.1/x86_64-l +inux/Moose/Meta/Attribute.pm line 1261 Moose::Meta::Attribute::_coerce_and_verify(&#039;Moose::Meta:: +Attribute=HASH(0x1c82350)&#039;, &#039;ARRAY(0x21b92a8)&#039;, &#039; +Net::Twitter::Meta::Method=HASH(0x21b8d08)&#039;) called at /usr/lib6 +4/perl5/vendor_perl/5.10.1/x86_64-linux/Moose/Meta/Attribute.pm line +531 Moose::Meta::Attribute::initialize_instance_slot(&#039;Moose:: +Meta::Attribute=HASH(0x1c82350)&#039;, &#039;Moose::Meta::Instance=HA +SH(0x2077740)&#039;, &#039;Net::Twitter::Meta::Method=HASH(0x21b8d08) +&#039;, &#039;HASH(0xab69f8)&#039;) called at /usr/lib64/perl5/vendor +_perl/5.10.1/x86_64-linux/Class/MOP/Class.pm line 525 Class::MOP::Class::_construct_instance(&#039;Moose::Meta::Clas +s=HASH(0x2098b38)&#039;, &#039;HASH(0xab69f8)&#039;) called at /usr/l +ib64/perl5/vendor_perl/5.10.1/x86_64-linux/Class/MOP/Class.pm line 49 +8 Class::MOP::Class::new_object(&#039;Moose::Meta::Class=HASH(0x +2098b38)&#039;, &#039;HASH(0xab69f8)&#039;) called at /usr/lib64/perl +5/vendor_perl/5.10.1/x86_64-linux/Moose/Meta/Class.pm line 274 Moose::Meta::Class::new_object(&#039;Moose::Meta::Class=HASH(0 +x2098b38)&#039;, &#039;HASH(0xab69f8)&#039;) called at constructor Mo +ose::Meta::Method::_new (defined at /usr/lib64/perl5/vendor_perl/5.10 +.1/x86_64-linux/Moose.pm line 233) line 4
      :| Are there any other decent Twitter methods out there? (I prefer OO, as when/if twitter change their method - its a simple case of just updating it).
      Cheers

      Andy

        The key error message is: Attribute (aliases) does not pass the type constraint because: Validation failed for 'ArrayRef[Str]' with value ARRAY(0x21b92a8). Which suggests that some code somewhere is trying to set "aliases" to an arrayref, but not an arrayref of strings. The aliases stuff appears to be part of the internal sugar defined in Net::Twitter::API, so the bug is probably somewhere in Net::Twitter itself - do you have any more of the stack trace from the error message?

        Net::Twitter is actually rather good in my experience, so I'd probably recommend persisting with it.

        package Cow { use Moo; has name => (is => 'lazy', default => sub { 'Mooington' }) } say Cow->new->name