On 8/19/15 11:03 AM, Stephen Quinney wrote: > I have a problem with using MooX::HandlesVia for attributes in roles > when I consume more than one role in a class. I get: > > "Due to a method name conflict between roles 'SJQ::Role::Bar and > SJQ::Role::Foo', the method 'has' must be implemented by 'SJQ::Baz' at > /usr/share/perl5/vendor_perl/Role/Tiny.pm line 215." > > I can't see what I'm doing wrong here, any suggestions? > > Here's an example: > > { > package SJQ::Role::Foo; > use Moo::Role; > use MooX::HandlesVia; > } > > { > package SJQ::Role::Bar; > use Moo::Role; > use MooX::HandlesVia; > } > > { > package SJQ::Baz; > use Moo; > > with 'SJQ::Role::Foo','SJQ::Role::Bar'; > > use namespace::clean; > } > > my $test = SJQ::Baz->new(); > > >
This is a known issue: https://github.com/mattp-/MooX-HandlesVia/issues/4 Using namespace::clean is what I would recommend for a workaround. A proper fix will involve an additional routine in Moo that MooX::HandlesVia can use. This has been on my todo list for a while but hasn't yet made it to the top.