NAME
   CatalystX::InjectComponent - Inject components into your Catalyst
   application

VERSION
   version 0.025

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 appropriate, 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( into => $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 <[email protected]>

COPYRIGHT AND LICENSE
   This software is copyright (c) 2012 by Robert Krimen.

   This is free software; you can redistribute it and/or modify it under
   the same terms as the Perl 5 programming language system itself.