X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FScript%2FFastCGI.pm;h=bad4af65a8be998a6afec7af49cd9bf8d6531e28;hb=8865ee1205d2f74a601105ae6c85af2cceb8ad7d;hp=74648af965bf9661fa0ece449115932d1c618e21;hpb=4e45780e0eb1ea96cc9402e16429de10fe6b5209;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst/Script/FastCGI.pm b/lib/Catalyst/Script/FastCGI.pm index 74648af..bad4af6 100644 --- a/lib/Catalyst/Script/FastCGI.pm +++ b/lib/Catalyst/Script/FastCGI.pm @@ -1,105 +1,122 @@ 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', - is => 'ro', - default => "3000", - documentation => qq{ specify a different listening port } + traits => [qw(Getopt)], + cmd_aliases => 'l', + isa => Str, + is => 'ro', + documentation => 'Specify a listening port/socket', ); has pidfile => ( - traits => [qw(Getopt)], - cmd_aliases => 'pid', - isa => 'Str', - is => 'ro', - documentation => qq{ specify a pidfile } + traits => [qw(Getopt)], + cmd_aliases => [qw/pid p/], + isa => Str, + is => 'ro', + documentation => 'Specify a pidfile', ); -has daemon => ( - isa => 'Bool', - is => 'ro', - traits => [qw(Getopt)], - cmd_aliases => 'd', - documentation => qq{ daemonize } +has daemon => ( + traits => [qw(Getopt)], + isa => Bool, + is => 'ro', + cmd_aliases => [qw/d detach/], # Eww, detach is here as we fucked it up.. Deliberately not documented + documentation => 'Daemonize (go into the background)', ); -has manager => ( - isa => 'Str', - is => 'ro', - traits => [qw(Getopt)], - cmd_aliases => 'm', - documentation => qq{ use a different FastCGI manager } +has manager => ( + traits => [qw(Getopt)], + isa => Str, + is => 'ro', + cmd_aliases => 'M', + documentation => 'Use a different FastCGI process manager class', ); -has keep_stderr => ( - traits => [qw(Getopt)], - cmd_aliases => 'std', - isa => 'Bool', - is => 'ro', - documentation => qq{ log STDERR } +has keeperr => ( + traits => [qw(Getopt)], + 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 } + traits => [qw(Getopt)], + cmd_aliases => 'n', + isa => Int, + is => 'ro', + documentation => 'Specify a number of child processes', ); -has detach => ( - traits => [qw(Getopt)], - cmd_aliases => 'det', - isa => 'Bool', - is => 'ro', - documentation => qq{ detach this FastCGI process } +has proc_title => ( + traits => [qw(Getopt)], + isa => Str, + is => 'ro', + documentation => 'Set the process title', ); -has _app => ( - reader => 'app', - init_arg => 'app', - traits => [qw(NoGetopt)], - isa => 'Str', - is => 'ro', -); - -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, + detach => $self->daemon, + keep_stderr => $self->keeperr, + proc_title => $self->proc_title, } ); - } -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 + --proc_title set the process title + +=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