• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

lib/CatalystX/H03-May-2022-17268

t/H02-Jul-2012-11768

ChangesH A D02-Jul-2012688 2114

MANIFESTH A D02-Jul-2012139 1110

META.ymlH A D02-Jul-2012545 2221

Makefile.PLH A D02-Jul-20121.1 KiB5742

READMEH A D02-Jul-20122.5 KiB8056

README

1NAME
2    CatalystX::InjectComponent - Inject components into your Catalyst
3    application
4
5VERSION
6    version 0.025
7
8SYNOPSIS
9        package My::App;
10
11        use Catalyst::Runtime '5.80';
12
13        use Moose;
14        BEGIN { extends qw/Catalyst/ }
15
16        ...
17
18        after 'setup_components' => sub {
19            my $class = shift;
20            CatalystX::InjectComponent->inject( into => $class, component => 'MyModel' );
21            if ( $class->config->{ ... ) {
22                CatalystX::InjectComponent->inject( into => $class, component => 'MyRootV2', as => 'Controller::Root' );
23            }
24            else {
25                CatalystX::InjectComponent->inject( into => $class, component => 'MyRootV1', as => 'Root' ); # Controller:: will be automatically prefixed
26            }
27        };
28
29DESCRIPTION
30    CatalystX::InjectComponent will inject Controller, Model, and View
31    components into your Catalyst application at setup (run)time. It does
32    this by creating a new package on-the-fly, having that package extend
33    the given component, and then having Catalyst setup the new component
34    (via "->setup_component")
35
36So, how do I use this thing?
37    You should inject your components when appropriate, typically after
38    "setup_compenents" runs
39
40    If you're using the Moose version of Catalyst, then you can use the
41    following technique:
42
43        use Moose;
44        BEGIN { extends qw/Catalyst/ }
45
46        after 'setup_components' => sub {
47            my $class = shift;
48
49            CatalystX::InjectComponent->inject( into => $class, ... )
50        };
51
52METHODS
53  CatalystX::InjectComponent->inject( ... )
54        into        The Catalyst package to inject into (e.g. My::App)
55        component   The component package to inject
56        as          An optional moniker to use as the package name for the derived component
57
58    For example:
59
60        ->inject( into => My::App, component => Other::App::Controller::Apple )
61
62            The above will create 'My::App::Controller::Other::App::Controller::Apple'
63
64        ->inject( into => My::App, component => Other::App::Controller::Apple, as => Apple )
65
66            The above will create 'My::App::Controller::Apple'
67
68ACKNOWLEDGEMENTS
69    Inspired by Catalyst::Plugin::AutoCRUD
70
71AUTHOR
72    Robert Krimen <robertkrimen@gmail.com>
73
74COPYRIGHT AND LICENSE
75    This software is copyright (c) 2012 by Robert Krimen.
76
77    This is free software; you can redistribute it and/or modify it under
78    the same terms as the Perl 5 programming language system itself.
79
80