X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst.pm;h=673b3c0b01b8963c6c9d5ce449f11c090fe2e7dc;hb=3d3ea779e262cbed4d88b5b32fe4a123f2e32fa4;hp=500276330e8a9cf66046e881b86f681e46e8748d;hpb=02352a283d954f8837277e40ba141b5c2c07af1b;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst.pm b/lib/Catalyst.pm index 5002763..673b3c0 100644 --- a/lib/Catalyst.pm +++ b/lib/Catalyst.pm @@ -1124,8 +1124,17 @@ sub setup { $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} ); @@ -1159,14 +1168,6 @@ You are running an old script! EOF } - # 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( {} ); @@ -3101,7 +3102,15 @@ See under L information regarding C and how to use it to enable L 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 @@ -3120,9 +3129,9 @@ sub registered_middlewares { } 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)) { @@ -3144,7 +3153,8 @@ sub setup_middleware { } } - $class->_psgi_middleware(\@middleware); + my @existing = @{$class->_psgi_middleware || []}; + $class->_psgi_middleware([@middleware,@existing,]); } =head2 registered_data_handlers