stop recommending the register_implementation thing
Jesse Luehrs [Mon, 20 Feb 2012 14:23:09 +0000 (08:23 -0600)]
lib/Moose/Cookbook/Meta/Labeled_AttributeTrait.pod
lib/Moose/Cookbook/Meta/Table_MetaclassTrait.pod

index 74c85ff..1e9e394 100644 (file)
@@ -11,6 +11,7 @@ __END__
 
   package MyApp::Meta::Attribute::Trait::Labeled;
   use Moose::Role;
+  Moose::Util::meta_attribute_alias('Labeled');
 
   has label => (
       is        => 'rw',
@@ -18,9 +19,6 @@ __END__
       predicate => 'has_label',
   );
 
-  package Moose::Meta::Attribute::Custom::Trait::Labeled;
-  sub register_implementation {'MyApp::Meta::Attribute::Trait::Labeled'}
-
   package MyApp::Website;
   use Moose;
 
@@ -138,14 +136,13 @@ You can see that a trait is just a L<Moose::Role>. In this case, our role
 contains a single attribute, C<label>. Any attribute which does this trait
 will now have a label.
 
-Next we register our trait with Moose:
+We also register our trait with Moose:
 
-  package Moose::Meta::Attribute::Custom::Trait::Labeled;
-  sub register_implementation { 'MyApp::Meta::Attribute::Trait::Labeled' }
+  Moose::Util::meta_attribute_alias('Labeled');
 
-Moose looks for the C<register_implementation> method in
-C<Moose::Meta::Attribute::Custom::Trait::$TRAIT_NAME> to find the full
-name of the trait.
+This allows Moose to find our trait by the short name C<Labeled> when passed
+to the C<traits> attribute option, rather than requiring the full package
+name to be specified.
 
 Finally, we pass our trait when defining an attribute:
 
index 0437357..e51539e 100644 (file)
@@ -26,15 +26,13 @@ BEGIN {
   # in lib/MyApp/Meta/Class/Trait/HasTable.pm
   package MyApp::Meta::Class::Trait::HasTable;
   use Moose::Role;
+  Moose::Util::meta_class_alias('HasTable');
 
   has table => (
       is  => 'rw',
       isa => 'Str',
   );
 
-  package Moose::Meta::Class::Custom::Trait::HasTable;
-  sub register_implementation { 'MyApp::Meta::Class::Trait::HasTable' }
-
   # in lib/MyApp/User.pm
   package MyApp::User;
   use Moose -traits => 'HasTable';