This file is indexed.

/usr/share/perl5/Catalyst/PSGI.pod is in libcatalyst-perl 5.90115-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
=pod

=head1 NAME

Catalyst::PSGI - How Catalyst and PSGI work together

=head1 SYNOPSIS

The L<PSGI> specification defines an interface between web servers and
Perl-based web applications and frameworks. It supports the writing of
portable applications that can be run using various methods (as a
standalone server, or using mod_perl, FastCGI, etc.). L<Plack> is an
implementation of the PSGI specification for running Perl applications.

Catalyst used to contain an entire set of C<< Catalyst::Engine::XXXX >>
classes to handle various web servers and environments (e.g. CGI,
FastCGI, mod_perl) etc.

This has been changed in Catalyst 5.9 so that all of that work is done
by Catalyst implementing the L<PSGI> specification, using L<Plack>'s
adaptors to implement that functionality.

This means that we can share common code, and share fixes for specific
web servers.

=head1 I already have an application

If you already have a Catalyst application, then you should be able to
upgrade to the latest release with little or no trouble (see the notes
in L<Catalyst::Upgrading> for specifics about your web server
deployment).

=head1 Writing your own PSGI file.

=head2 What is a .psgi file?

A C<< .psgi >> file lets you control how your application code reference
is built. Catalyst will automatically handle this for you, but it's
possible to do it manually by creating a C<myapp.psgi> file in the root
of your application.

=head2 Why would I want to write my own .psgi file?

Writing your own .psgi file allows you to use the alternate L<plackup> command
to start your application, and allows you to add classes and extensions
that implement L<Plack::Middleware>, such as L<Plack::Middleware::ErrorDocument>
or L<Plack::Middleware::AccessLog>.

The simplest C<.psgi> file for an application called C<TestApp> would be:

    use strict;
    use warnings;
    use TestApp;

    my $app = TestApp->psgi_app(@_);

Note that Catalyst will apply a number of middleware components for you
automatically, and these B<will not> be applied if you manually create a
psgi file yourself. Details of these components can be found below.

Additional information about psgi files can be found at:
L<http://search.cpan.org/dist/Plack/lib/Plack.pm#.psgi_files>

=head2 What is in the .psgi file Catalyst generates by default?

Catalyst generates an application which, if the C<using_frontend_proxy>
setting is on, is wrapped in L<Plack::Middleware::ReverseProxy>, and
contains some engine-specific fixes for uniform behaviour, as contained
in:

=over

=item L<Plack::Middleware::LighttpdScriptNameFix>

=item L<Plack::Middleware::IIS6ScriptNameFix>

=back

If you override the default by providing your own C<< .psgi >> file,
then none of these things will be done automatically for you by the PSGI
application returned when you call C<< MyApp->psgi_app >>. Thus, if you
need any of this functionality, you'll need to implement this in your
C<< .psgi >> file yourself.

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.

This means that the auto-generated (no .psgi file) code looks something
like this:

    use strict;
    use warnings;
    use TestApp;

    my $app = TestApp->apply_default_middlewares(TestApp->psgi_app(@_));

=head1 SEE ALSO

L<Catalyst::Upgrading>, L<Plack>, L<PSGI::FAQ>, L<PSGI>.

=head1 AUTHORS

Catalyst Contributors, see Catalyst.pm

=head1 COPYRIGHT

This library is free software. You can redistribute it and/or modify
it under the same terms as Perl itself.

=cut