NAME CatalystX::InjectComponent - Inject components into your Catalyst application VERSION Version 0.023 SYNOPSIS package My::App; use Catalyst::Runtime '5.80'; use Moose; BEGIN { extends qw/Catalyst/ } ... after 'setup_components' => sub { my $class = shift; CatalystX::InjectComponent->inject( into => $class, component => 'MyModel' ); if ( $class->config->{ ... ) { CatalystX::InjectComponent->inject( into => $class, component => 'MyRootV2', as => 'Controller::Root' ); } else { CatalystX::InjectComponent->inject( into => $class, component => 'MyRootV1', as => 'Root' ); # Controller:: will be automatically prefixed } }; DESCRIPTION CatalystX::InjectComponent will inject Controller, Model, and View components into your Catalyst application at setup (run)time. It does this by creating a new package on-the-fly, having that package extend the given component, and then having Catalyst setup the new component (via "->setup_component") So, how do I use this thing? You should inject your components when appropiate, typically after "setup_compenents" runs If you're using the Moose version of Catalyst, then you can use the following technique: use Moose; BEGIN { extends qw/Catalyst/ } after 'setup_components' => sub { my $class = shift; CatalystX::InjectComponent->inject( catalyst => $class, ... ) }; METHODS CatalystX::InjectComponent->inject( ... ) into The Catalyst package to inject into (e.g. My::App) component The component package to inject as An optional moniker to use as the package name for the derived component For example: ->inject( into => My::App, component => Other::App::Controller::Apple ) The above will create 'My::App::Controller::Other::App::Controller::Apple' ->inject( into => My::App, component => Other::App::Controller::Apple, as => Apple ) The above will create 'My::App::Controller::Apple' ACKNOWLEDGEMENTS Inspired by Catalyst::Plugin::AutoCRUD AUTHOR Robert Krimen, "" BUGS Please report any bugs or feature requests to "bug-catalystx-injectcomponent at rt.cpan.org", or through the web interface at . I will be notified, and then you'll automatically be notified of progress on your bug as I make changes. SUPPORT You can find documentation for this module with the perldoc command. perldoc CatalystX::InjectComponent You can also look for information at: * RT: CPAN's request tracker * AnnoCPAN: Annotated CPAN documentation * CPAN Ratings * Search CPAN ACKNOWLEDGEMENTS COPYRIGHT & LICENSE Copyright 2009 Robert Krimen, all rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.