Thanks.  This worked after I changed meta_attribute_alias to meta_class_alias.

Cheers,


On 4/28/10, Jesse Luehrs <d...@tozt.net> wrote:
> On Wed, Apr 28, 2010 at 12:59:21PM +0100, Zbigniew Lukasiak wrote:
>> Hi there,
>>
>> The recipe in
>> http://search.cpan.org/~flora/Moose-1.01/lib/Moose/Cookbook/Meta/Recipe3.pod
>> uses an additional package in the Moose namespace:
>>
>> package Moose::Meta::Attribute::Custom::Trait::Labeled;
>>   sub register_implementation {'MyApp::Meta::Attribute::Trait::Labeled'}
>>
>> Forgive my ignorance - I am just starting to learn this stuff - but is
>> there a way to not use a package in the Moose namespace for this?  I
>> mean if I add a package like that to my distribution - then I can
>> expect some problems with permissions to the Moose namespace on CPAN
>> (if not now - then in the future), and also it can easily lead to name
>> collisions.
>>
>> To give you some context: the full example of what I am doing is at: (
>> http://github.com/zby/WebNano/tree/master/lib/Moose/Meta/Class/Custom/Trait/,
>> http://github.com/zby/WebNano/blob/master/lib/WebNano/Controller/Meta/Class/Trait/WebDispatchTable.pm
>> and
>> http://github.com/zby/WebNano/blob/master/lib/WebNano/Controller/WebDispatchTable/Moose.pm)
>> in short it adds a 'get' keyword that register a sub on a dispatch
>> table kept in the meta class.
>
> Usually in the past, you would just define this package inside the file
> that defines your trait:
>
>   package Foo::Meta::Trait;
>   use Moose::Role;
>   ...;
>
>   package # hide from PAUSE
>       Moose::Meta::Attribute::Custom::Trait::Foo;
>   sub register_implementation { 'Foo::Meta::Trait' }
>
> With recent Moose versions though, you can just do this:
>
>   package Foo::Meta::Trait;
>   use Moose::Role;
>   Moose::Util::meta_attribute_alias('Foo');
>   ...;
>
> -doy
>


-- 
Zbigniew Lukasiak
http://brudnopis.blogspot.com/
http://perlalchemy.blogspot.com/

Reply via email to