# Remember to update this in Catalyst::Runtime as well!
-our $VERSION = '5.90051';
+our $VERSION = '5.90059_001';
sub import {
my ( $class, @arguments ) = @_;
$class->setup_home( delete $flags->{home} );
- $class->setup_log( delete $flags->{log} );
$class->setup_plugins( delete $flags->{plugins} );
+
+ # Call plugins setup, this is stupid and evil.
+ # Also screws C3 badly on 5.10, hack to avoid.
+ {
+ no warnings qw/redefine/;
+ local *setup = sub { };
+ $class->setup unless $Catalyst::__AM_RESTARTING;
+ }
+
+ $class->setup_log( delete $flags->{log} );
$class->setup_middleware();
$class->setup_data_handlers();
$class->setup_dispatcher( delete $flags->{dispatcher} );
EOF
}
+ # Initialize our data structure
+ $class->components( {} );
+
+ $class->setup_components;
+
if ( $class->debug ) {
my @plugins = map { "$_ " . ( $_->VERSION || '' ) } $class->registered_plugins;
? $class->log->debug(qq/Found home "$home"/)
: $class->log->debug(qq/Home "$home" doesn't exist/)
: $class->log->debug(q/Couldn't find home/);
- }
-
- # Call plugins setup, this is stupid and evil.
- # Also screws C3 badly on 5.10, hack to avoid.
- {
- no warnings qw/redefine/;
- local *setup = sub { };
- $class->setup unless $Catalyst::__AM_RESTARTING;
- }
- # Initialize our data structure
- $class->components( {} );
-
- $class->setup_components;
-
- if ( $class->debug ) {
my $column_width = Catalyst::Utils::term_width() - 8 - 9;
my $t = Text::SimpleTable->new( [ $column_width, 'Class' ], [ 8, 'Type' ] );
for my $comp ( sort keys %{ $class->components } ) {
to use it to enable L<Plack::Middleware>
This method is automatically called during 'setup' of your application, so
-you really don't need to invoke it.
+you really don't need to invoke it. However you may do so if you find the idea
+of loading middleware via configuration weird :). For example:
+
+ package MyApp;
+
+ use Catalyst;
+
+ __PACKAGE__->setup_middleware('Head');
+ __PACKAGE__->setup;
When we read middleware definitions from configuration, we reverse the list
which sounds odd but is likely how you expect it to work if you have prior
}
sub setup_middleware {
- my ($class, @middleware_definitions) = @_;
- push @middleware_definitions, reverse(
- @{$class->config->{'psgi_middleware'}||[]});
+ my $class = shift;
+ my @middleware_definitions = @_ ?
+ @_ : reverse(@{$class->config->{'psgi_middleware'}||[]});
my @middleware = ();
while(my $next = shift(@middleware_definitions)) {
}
}
- $class->_psgi_middleware(\@middleware);
+ my @existing = @{$class->_psgi_middleware || []};
+ $class->_psgi_middleware([@middleware,@existing,]);
}
=head2 registered_data_handlers