Merge branch 'master' into psgi
[catagits/Catalyst-Runtime.git] / lib / Catalyst.pm
index 03ce6ab..5d2d3fc 100644 (file)
@@ -1249,7 +1249,7 @@ EOF
 A hook to attach modifiers to. This method does not do anything except set the
 C<setup_finished> accessor.
 
-Applying method modifiers to the C<setup> method doesn't work, because of quirky thingsdone for plugin setup.
+Applying method modifiers to the C<setup> 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 )
 
@@ -2688,7 +2668,23 @@ EOW
     return $app->apply_default_middlewares($app->psgi_app);
 }
 
-# FIXME - document me
+=head2 $c->apply_default_middlewares
+
+Adds the following L<Plack> middlewares to your application, since they are
+useful and commonly needed:
+
+L<Plack::Middleware::ReverseProxy>, (conditionally added based on the status
+of your $ENV{REMOTE_ADDR}, and can be forced on with C<using_frontend_proxy>
+or forced off with C<ignore_frontend_proxy>), L<Plack::Middleware::LighttpdScriptNameFix>
+(if you are using Lighttpd), L<Plack::Middleware::IIS6ScriptNameFix> (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) = @_;