From: John Napiorkowski Date: Sat, 7 May 2011 01:48:18 +0000 (-0400) Subject: Merge branch 'psgi' into origin/psgi X-Git-Tag: 5.89003~44 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=commitdiff_plain;h=ccfec942b305481ff0c471d353e2663b1f768bf9;hp=-c Merge branch 'psgi' into origin/psgi --- ccfec942b305481ff0c471d353e2663b1f768bf9 diff --combined lib/Catalyst.pm index 596422c,e01270d..03ce6ab --- a/lib/Catalyst.pm +++ b/lib/Catalyst.pm @@@ -2410,27 -2410,7 +2410,27 @@@ Starts the engine =cut -sub run { my $c = shift; return $c->engine->run( $c, $c->_finalized_psgi_app, @_ ) } +sub run { + my $c = shift; + $c->engine_loader->needs_psgi_engine_compat_hack ? + $c->_run_needs_psgi_engine_compat_hack(@_) : + $c->engine->run( $c, $c->_finalized_psgi_app, @_ ); +} + +sub _run_needs_psgi_engine_compat_hack { + my $c = shift; + + ## We assume if they used the classic PSGI Engine, they must has CC:M + for my $metal (Catalyst::Controller::Metal->metals_for($c)) { + my $res = $metal->call(@_); + if (defined $res && !(ref $res eq 'ARRAY' && $res->[0] == 404)) { + return $res; + } + } + + ## If we got this far, just do the psgi app + $c->_finalized_psgi_app->(@_) +} =head2 $c->set_action( $action, $code, $namespace, $attrs ) @@@ -2685,14 -2665,12 +2685,12 @@@ documentation on how to upgrade from Ca EOW } - return $app->_wrapped_legacy_psgi_app($app->psgi_app); + return $app->apply_default_middlewares($app->psgi_app); } - # Note - this is for back compatibility. Catalyst should not know or care about - # how it's deployed. The recommended way of configuring this is now to - # use the ReverseProxy middleware yourself if you want it in a .psgi - # file. - sub _wrapped_legacy_psgi_app { + # FIXME - document me + + sub apply_default_middlewares { my ($app, $psgi_app) = @_; $psgi_app = Plack::Middleware::Conditional->wrap(