1 package DBIx::Class::DeploymentHandler::WithApplicatorDumple2;
8 'Module::Runtime' => ['require_module'],
11 subs => [qw(has require_module)];
14 my ($class, $target, %args) = @_;
16 my $interface_role = $args{interface_role}
17 or die 'interface_role is required!';
19 my $class_name = $args{class_name}
20 or die 'class_name is required!';
22 my $delegate_name = $args{delegate_name}
23 or die 'delegate_name is required!';
25 my $attributes_to_copy = $args{attributes_to_copy} || [];
26 my $attributes_to_assume = $args{attributes_to_assume} || [];
28 require_module($class_name);
30 my $meta = Class::MOP::class_of($class_name);
32 has($_->name => %{ $_->clone })
33 for grep { $_ } map $meta->find_attribute_by_name($_), @{ $attributes_to_copy };
35 has($delegate_name => (
38 does => $interface_role,
39 handles => $interface_role,
42 install '_build_'.$delegate_name => sub {
46 map { $_ => $self->$_ }
47 @{ $attributes_to_assume },
48 @{ $attributes_to_copy },
55 # vim: ts=2 sw=2 expandtab