cumulative role attrs? role meta attrs?

[email protected] (Mark Hedges)
Newsgroups perl.moose
Message-ID <[email protected]>
Hi.  I tried to follow the example in
Moose::Cookbook::Meta::Recipe5 but I got this error: 'Can't
locate object method "table" via package
"Moose::Meta::Class::__ANON__::SERIAL::1'.  I filed a bug.

What I am trying to do is create a container object for
another class of objects, apply selected roles to the
container on construction, which tell it what other roles to
apply to the contained objects.

I.e.

 my $hostset = My::HostSet
     ->with_traits(qw( Cluster Hardware ))
     ->new( hostnames => [qw( foo bar baz )]);

 package My::HostSet;
 with 'MooseX::Traits';
 has '+_trait_namespace' => ( default => 'My::Role::HostSet' );
 use My::Host;
 use Moose::Util qw( apply_all_roles );

 has hostnames (
     # ...
 );
 has hosts (
     # ...
     lazy_build => 1,
 );
 sub _build_hosts {
     my @hosts = map My::Host->new( hostname => $_ ), @{$hostnames};

     my @contained_object_roles = foo();  # ...
     # here I want to find out from My::Role::HostSet::Cluster
     # and My::Role::HostSet::Hardware what other roles it
     # should apply to the contained objects.

     apply_all_roles( $_, @contained_object_roles ) for @hosts;
     return \@hosts;
 }

I don't see a good way to do this.  Having same name attribute in
each HostSet role class conflicts, obviously.  I thought maybe
adding meta attributes to the HostSet role classes would be
the way to go, but the example doesn't work.

I don't know what I'm doing... thanks.  :-)

Mark
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.