1 package CatalystX::DynamicComponent;
3 use namespace::clean -excpept => 'meta';
5 sub _setup_dynamic_component {
6 my ($app, $name, $config) = @_;
8 my $appclass = blessed($app) || $app;
10 $type =~ s/^${appclass}:://; # FIXME - I think there is shit in C::Utils to do this.
13 my $meta = Moose->init_meta( for_class => $name );
14 $meta->superclasses('Catalyst::' . $type);
20 my ($component_class_name, $app, $args) = @_;
22 my $class = delete $args->{class};
23 Class::MOP::load_class($class);
28 $meta->make_immutable;
30 my $instance = $app->setup_component($name);
31 $app->components->{ $name } = $instance;