++ed by:
Author image Curtis "Ovid" Poe


MooseX::Role::Strict - use strict 'roles'


Version 0.05


This code will fail at composition time:

        package My::Role;
        use MooseX::Role::Strict;
        sub conflict {}
        package My::Class;
        use Moose;
        with 'My::Role';
        sub conflict {}

With an error message similar to the following:

    The class My::Class has implicitly overridden the method (conflict) from
    role My::Role ...

To resolve this, explictly exclude the 'conflict' method:

        package My::Class;
        use Moose;
        with 'My::Role' => { -excludes => 'conflict' };
        sub conflict {}


WARNING: this is ALPHA code. More features to be added later.

When using Moose::Role, a class which provides a method a role provides will silently override that method. This can cause strange, hard-to-debug errors when the role's methods are not called. Simple use MooseX::Role::Strict instead of Moose::Role and overriding a role's method becomes a composition-time failure. See the synopsis for a resolution.


Curtis "Ovid" Poe, <ovid at cpan.org>


Please report any bugs or feature requests to bug-moosex-role-strict at rt.cpan.org, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=MooseX-Role-Strict. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.


You can find documentation for this module with the perldoc command.

    perldoc MooseX::Role::Strict

You can also look for information at:



Add -includes to make things easier:

 with 'Some::Role' => { -includes => 'bar' };

That reverses the sense of '-excludes' in case you're more interested in the interface than the implementation. I'm unsure of the syntax for auto-converting a role to a pure interface.


Copyright 2009 Curtis "Ovid" Poe, all rights reserved.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.