X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst.pm;h=03ce6ab1f5adbe25916dc7ae0ba5e2c18de8d598;hb=ccfec942b305481ff0c471d353e2663b1f768bf9;hp=d093e2369f522475c994e2adfcaecd693b52c3c8;hpb=d36708268b46edefbe9ef44fda51b1ffce8e05a4;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst.pm b/lib/Catalyst.pm index d093e23..03ce6ab 100644 --- a/lib/Catalyst.pm +++ b/lib/Catalyst.pm @@ -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 ) @@ -2665,14 +2685,12 @@ documentation on how to upgrade from Catalyst::Engine::PSGI. 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( @@ -3279,6 +3297,10 @@ rainboxx: Matthias Dietrich, C dd070: Dhaval Dhanani +=head1 COPYRIGHT + +Copyright (c) 2005, the above named PROJECT FOUNDER and CONTRIBUTORS. + =head1 LICENSE This library is free software. You can redistribute it and/or modify it under