Merge branch 'psgi' into origin/psgi
John Napiorkowski [Sat, 7 May 2011 01:48:18 +0000 (21:48 -0400)]
1  2 
lib/Catalyst.pm

diff --combined 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(