Catalyst used to contain a whole set of Catalyst::Engine::XXXX classes to adapt to various different web servers, and environments (e.g. CGI, FastCGI, mod_perl) etc.
Catalyst::Engine::XXXX
This has been changed so that all of that work is done by Catalyst just implementing the PSGI specification, and using Plack's adaptors to implement that functionality.
This means that we can share common code, and fixes for specific web servers.
If you already have a Catalyst application, then this means very little, and you should be able to upgrade to the latest release with little or no trouble (See notes in Catalyst::Upgrading for specifics about your web server deployment).
A .psgi file lets you manually controll how your application code reference is built.
.psgi
Catalyst normally takes care of this for you, but it's possible to do it manually by creating a myapp.psgi file in the root of your application.
myapp.psgi
The simplest .psgi file for an application called TestApp would be:
TestApp
use strict; use warnings; use TestApp; my $app = sub { TestApp->psgi_app(@_) };
It should be noted that Catalyst may apply a number of middleware components for you automatically, and these will not be applied if you manually create a psgi file yourself. Details of these middlewares can be found below.
Additional information about psgi files can be found at: http://search.cpan.org/dist/Plack/lib/Plack.pm#.psgi_files
Writing your own .psgi file allows you to use the alternate plackup command to start your application, and allows you to add classes and extensions that implement Plack::Middleware, such as Plack::Middleware::ErrorDocument, or Plack::Middleware::AccessLog.
Catalyst generates an application which, if the using_frontend_proxy setting is on, is wrapped in Plack::Middleware::ReverseProxy, and contains some engine specific fixes for uniform behaviour, as contained in:
using_frontend_proxy
If you override the default by providing your own .psgi file, then none of these things will be done automatically for you by the PSGI application returned when you call MyApp->psgi_app, and if you need any of this functionality, you'll need to implement this in your .psgi file yourself.
MyApp->psgi_app
An apply_default_middlewares method is supplied to wrap your application in the default middlewares if you want this behaviour and you are providing your own .psgi file.
Catalyst::Upgrading, Plack, PSGI::FAQ, PSGI.
Catalyst Contributors, see Catalyst.pm
This library is free software. You can redistribute it and/or modify it under the same terms as Perl itself.
To install Catalyst::Runtime, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Catalyst::Runtime
CPAN shell
perl -MCPAN -e shell install Catalyst::Runtime
For more information on module installation, please visit the detailed CPAN module installation guide.