X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst.pm;h=e5e43eaacb52a7fc86d14e359a5909bd31c197c1;hb=c72bc6ebc2aaad8773c582551b351aa6bb46be17;hp=d70d4c48a3c9d69bb5d393f9c749cfe55e87bdc2;hpb=aceee8b5c5fa1198e7c77652ba58049d4582b8d8;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst.pm b/lib/Catalyst.pm index d70d4c4..e5e43ea 100644 --- a/lib/Catalyst.pm +++ b/lib/Catalyst.pm @@ -81,7 +81,7 @@ __PACKAGE__->stats_class('Catalyst::Stats'); # Remember to update this in Catalyst::Runtime as well! -our $VERSION = '5.89001'; +our $VERSION = '5.89002'; sub import { my ( $class, @arguments ) = @_; @@ -2407,7 +2407,7 @@ Starts the engine. =cut -sub run { my $c = shift; return $c->engine->run( $c, $c->psgi_app, @_ ) } +sub run { my $c = shift; return $c->engine->run( $c, $c->_finalized_psgi_app, @_ ) } =head2 $c->set_action( $action, $code, $namespace, $attrs ) @@ -2619,44 +2619,18 @@ sub setup_engine { return; } -=head2 $c->psgi_app - -Builds a PSGI application coderef for the catalyst application C<$c> using -Lsetup_psgi_app">, stores it internally, and returns it. On the next call -to this method, C won't be invoked again, but its persisted -return value of it will be returned. - -This is the top-level entrypoint for things that need a full blown Catalyst PSGI -app. If you only need the raw PSGI application, without any middlewares, use -Lraw_psgi_app"> instead. - -=cut - -sub psgi_app { +sub _finalized_psgi_app { my ($app) = @_; unless ($app->_psgi_app) { - my $psgi_app = $app->setup_psgi_app; + my $psgi_app = $app->_setup_psgi_app; $app->_psgi_app($psgi_app); } return $app->_psgi_app; } -=head2 $c->setup_psgi_app - -Builds a PSGI application coderef for the catalyst application C<$c>. - -If we're able to locate a C<${myapp}.psgi> file in the applications home -directory, we'll use that to obtain our code reference. - -Otherwise the raw psgi app, without any middlewares is created using -C and wrapped into L -conditionally. See L. - -=cut - -sub setup_psgi_app { +sub _setup_psgi_app { my ($app) = @_; if (my $home = Path::Class::Dir->new($app->config->{home})) { @@ -2668,12 +2642,18 @@ sub setup_psgi_app { if -e $psgi_file; } - # 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. + return $app->_wrapped_legacy_psgi_app($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 { + my ($app, $psgi_app) = @_; + return Plack::Middleware::Conditional->wrap( - $app->raw_psgi_app, + $psgi_app, builder => sub { Plack::Middleware::ReverseProxy->wrap($_[0]) }, condition => sub { my ($env) = @_; @@ -2684,16 +2664,18 @@ sub setup_psgi_app { ); } -=head2 $c->raw_psgi_app +=head2 $c->psgi_app Returns a PSGI application code reference for the catalyst application C<$c>. This is the bare application without any middlewares -applied. C<${myapp}.psgi> is not taken into account. See -Lsetup_psgi_app">. +applied. C<${myapp}.psgi> is not taken into account. + +This is what you want to be using to retrieve the PSGI application code +reference of your Catalyst application for use in F<.psgi> files. =cut -sub raw_psgi_app { +sub psgi_app { my ($app) = @_; return $app->engine->build_psgi_app($app); }