Make sure roles are applied to right metaclass
[gitmo/MooseX-ClassAttribute.git] / lib / MooseX / ClassAttribute / Trait / Application / ToRole.pm
index b750f42..babdbff 100644 (file)
@@ -5,19 +5,19 @@ use warnings;
 
 use Moose::Util::MetaRole;
 use MooseX::ClassAttribute::Trait::Application::ToClass;
-use MooseX::ClassAttribute::Trait::Application::ToInstance;
 
 use namespace::autoclean;
 use Moose::Role;
 
 with 'MooseX::ClassAttribute::Trait::Application';
 
-sub apply_class_attributes {
+around apply => sub {
+    my $orig  = shift;
     my $self  = shift;
     my $role1 = shift;
     my $role2 = shift;
 
-    $role2 = Moose::Util::MetaRole::apply_metaclass_roles(
+    $role2 = Moose::Util::MetaRole::apply_metaroles(
         for            => $role2,
         role_metaroles => {
             role => ['MooseX::ClassAttribute::Trait::Role'],
@@ -25,12 +25,17 @@ sub apply_class_attributes {
                 ['MooseX::ClassAttribute::Trait::Application::ToClass'],
             application_to_role =>
                 ['MooseX::ClassAttribute::Trait::Application::ToRole'],
-            application_to_instance => [
-                'MooseX::ClassAttribute::Trait::Application::ToInstance'
-            ],
         },
     );
 
+    $self->$orig( $role1, $role2 );
+};
+
+sub _apply_class_attributes {
+    my $self  = shift;
+    my $role1 = shift;
+    my $role2 = shift;
+
     foreach my $attribute_name ( $role1->get_class_attribute_list() ) {
         if (   $role2->has_class_attribute($attribute_name)
             && $role2->get_class_attribute($attribute_name)
@@ -51,3 +56,20 @@ sub apply_class_attributes {
 }
 
 1;
+
+# ABSTRACT: A trait that supports applying class attributes to roles
+
+__END__
+
+=pod
+
+=head1 DESCRIPTION
+
+This trait is used to allow the application of roles containing class
+attributes to roles.
+
+=head1 BUGS
+
+See L<MooseX::ClassAttribute> for details.
+
+=cut