Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation
 
PerlMonks  

Re^2: Moose: How to check if a class implements a role? (does)

by Monk::Thomas (Beadle)
on Jul 19, 2013 at 07:52 UTC ( #1045287=note: print w/ replies, xml ) Need Help??


in reply to Re: Moose: How to check if a class implements a role? (does)
in thread Moose: How to check if a class implements a role?

Thanks. That is exactly what I was looking for. It even works when applying a role during runtime. (This comes quite handy for implementing a dummy backend class which can fake different feature-set. Think something along the line of DBI, where you want to test the DBI class, but not the actual backend like DBD::mysql)

(Moose)

sub BUILD { my $self = shift; my $mode = $self->get_mode(); # normally roles are not used/required, but since we manipulate this # class' roles at runtime we need to require the role if ($mode =~ /R/xmsi) { require TLA::Datastore::_readable; TLA::Datastore::_readable->meta->apply($self); } if ($mode =~ /W/xmsi) { require TLA::Datastore::_writeable; TLA::Datastore::_writeable->meta->apply($self); } if ($mode =~ /X/xmsi) { require TLA::Datastore::_execute; TLA::Datastore::_execute->meta->apply($self); } return; }
And later I can test for a specific role:
my $ds = TLA::Datastore::Dummy->new('mode' => 'R'); if ( $ds->DOES('TLA::Datastore::_readable') ) { # do stuff };


Comment on Re^2: Moose: How to check if a class implements a role? (does)
Select or Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1045287]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others avoiding work at the Monastery: (3)
As of 2014-07-31 01:28 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite superfluous repetitious redundant duplicative phrase is:









    Results (244 votes), past polls