X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst.pm;h=5d2d3fc04cfc40520bbf3953fdbf413264414c7f;hb=27dad9301094f25bcedc66c476ec8b9d61521fb7;hp=596422c68e9ba76cd94658f7f0995393c3cb361d;hpb=89cb63ec32ead40a2ba223fce60016e3c19ce5ab;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst.pm b/lib/Catalyst.pm index 596422c..5d2d3fc 100644 --- a/lib/Catalyst.pm +++ b/lib/Catalyst.pm @@ -1249,7 +1249,7 @@ EOF A hook to attach modifiers to. This method does not do anything except set the C accessor. -Applying method modifiers to the C method doesn't work, because of quirky thingsdone for plugin setup. +Applying method modifiers to the C method doesn't work, because of quirky things done for plugin setup. Example: @@ -1692,8 +1692,8 @@ sub execute { $error = qq/Caught exception in $class->$name "$error"/; } $c->error($error); - $c->state(0); } + $c->state(0); } return $c->state; } @@ -2410,27 +2410,7 @@ Starts the engine. =cut -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->(@_) -} +sub run { my $c = shift; return $c->engine->run( $c, $c->_finalized_psgi_app, @_ ) } =head2 $c->set_action( $action, $code, $namespace, $attrs ) @@ -2685,14 +2665,28 @@ 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 { +=head2 $c->apply_default_middlewares + +Adds the following L middlewares to your application, since they are +useful and commonly needed: + +L, (conditionally added based on the status +of your $ENV{REMOTE_ADDR}, and can be forced on with C +or forced off with C), L +(if you are using Lighttpd), L (always +applied since this middleware is smart enough to conditionally apply itself). + +Additionally if we detect we are using Nginx, we add a bit of custom middleware +to solve some problems with the way that server handles $ENV{PATH_INFO} and +$ENV{SCRIPT_NAME} + +=cut + + +sub apply_default_middlewares { my ($app, $psgi_app) = @_; $psgi_app = Plack::Middleware::Conditional->wrap(