package Catalyst::Script::FastCGI;
BEGIN { $ENV{CATALYST_ENGINE} ||= 'FastCGI' }
-use FindBin qw/$Bin/;
-use lib "$Bin/../lib";
-use Pod::Usage;
use Moose;
use MooseX::Types::Moose qw/Str Bool Int/;
use namespace::autoclean;
-with 'MooseX::Getopt';
-
-has help => (
- traits => [qw(Getopt)],
- cmd_aliases => 'h',
- isa => 'Bool',
- is => 'ro',
- documentation => qq{ display this help and exits },
-);
+with 'Catalyst::ScriptRole';
has listen => (
traits => [qw(Getopt)],
cmd_aliases => 'l',
- isa => 'Int',
+ isa => Str,
is => 'ro',
- default => "3000",
- documentation => qq{ specify a different listening port }
+ documentation => 'Specify a listening port/socket',
);
has pidfile => (
traits => [qw(Getopt)],
cmd_aliases => 'pid',
- isa => 'Str',
+ isa => Str,
is => 'ro',
- documentation => qq{ specify a pidfile }
+ documentation => 'Specify a pidfile',
);
-has daemon => (
- isa => 'Bool',
- is => 'ro',
+has daemon => (
traits => [qw(Getopt)],
- cmd_aliases => 'd',
- documentation => qq{ daemonize }
+ isa => Bool,
+ is => 'ro',
+ cmd_aliases => 'd',
+ documentation => 'Daemonize (go into the background)',
);
-has manager => (
- isa => 'Str',
- is => 'ro',
+has manager => (
traits => [qw(Getopt)],
- cmd_aliases => 'm',
- documentation => qq{ use a different FastCGI manager }
+ isa => Str,
+ is => 'ro',
+ cmd_aliases => 'M',
+ documentation => 'Use a different FastCGI process manager class',
);
-has keep_stderr => (
+has keeperr => (
traits => [qw(Getopt)],
- cmd_aliases => 'std',
- isa => 'Bool',
- is => 'ro',
- documentation => qq{ log STDERR }
+ cmd_aliases => 'e',
+ isa => Bool,
+ is => 'ro',
+ documentation => 'Log STDERR',
);
has nproc => (
traits => [qw(Getopt)],
- cmd_aliases => 'np',
- isa => 'Int',
- is => 'ro',
- documentation => qq{ specify an nproc }
+ cmd_aliases => 'n',
+ isa => Int,
+ is => 'ro',
+ documentation => 'Specify a number of child processes',
);
-has detach => (
+has detach => (
traits => [qw(Getopt)],
- cmd_aliases => 'det',
- isa => 'Bool',
- is => 'ro',
- documentation => qq{ detach this FastCGI process }
-);
-
-has _app => (
- reader => 'app',
- init_arg => 'app',
- traits => [qw(NoGetopt)],
- isa => 'Str',
+ cmd_aliases => 'det',
+ isa => Bool,
is => 'ro',
+ documentation => 'Detach this FastCGI process',
);
-sub run {
- my $self = shift;
-
- pod2usage() if $self->help;
- my $app = $self->app;
- Class::MOP::load_class($app);
- $app->run(
+sub _application_args {
+ my ($self) = shift;
+ return (
$self->listen,
{
nproc => $self->nproc,
pidfile => $self->pidfile,
manager => $self->manager,
detach => $self->detach,
- keep_stderr => $self->keep_stderr,
+ keep_stderr => $self->keeperr,
}
);
-
}
-1;
+__PACKAGE__->meta->make_immutable;
+
+=head1 NAME
+
+Catalyst::Script::FastCGI - The FastCGI Catalyst Script
+
+=head1 SYNOPSIS
+
+ myapp_fastcgi.pl [options]
+
+ Options:
+ -? -help display this help and exits
+ -l -listen Socket path to listen on
+ (defaults to standard input)
+ can be HOST:PORT, :PORT or a
+ filesystem path
+ -n -nproc specify number of processes to keep
+ to serve requests (defaults to 1,
+ requires -listen)
+ -p -pidfile specify filename for pid file
+ (requires -listen)
+ -d -daemon daemonize (requires -listen)
+ -M -manager specify alternate process manager
+ (FCGI::ProcManager sub-class)
+ or empty string to disable
+ -e -keeperr send error messages to STDOUT, not
+ to the webserver
+
+=head1 DESCRIPTION
+
+Run a Catalyst application as fastcgi.
+
+=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