X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst.pm;h=a3cd9ad29a26ec7b5138928da6811d579ef375fa;hb=5d5f4a737bb6e3ef3c1b4c35ee91d162417b2552;hp=f476307c83e618c85e51509b776541a29f4bd7a6;hpb=fcffcb0519085a03de8791de40d2d18d4d236b93;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst.pm b/lib/Catalyst.pm index f476307..a3cd9ad 100644 --- a/lib/Catalyst.pm +++ b/lib/Catalyst.pm @@ -71,7 +71,7 @@ our $GO = Catalyst::Exception::Go->new; __PACKAGE__->mk_classdata($_) for qw/components arguments dispatcher engine log dispatcher_class engine_class context_class request_class response_class stats_class - setup_finished psgi_app/; + setup_finished _psgi_app/; __PACKAGE__->dispatcher_class('Catalyst::Dispatcher'); __PACKAGE__->engine_class('Catalyst::Engine'); @@ -2645,11 +2645,33 @@ sub setup_engine { $class->engine( $engine->new ); - $class->psgi_app( $class->setup_psgi_app ); - 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 { + my ($app) = @_; + + unless ($app->_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>.