package Catalyst::Script::FastCGI;
-
-BEGIN { $ENV{CATALYST_ENGINE} ||= 'FastCGI' }
use Moose;
use MooseX::Types::Moose qw/Str Bool Int/;
+use Data::OptList;
use namespace::autoclean;
+sub _plack_engine_name { 'FCGI' }
+
with 'Catalyst::ScriptRole';
has listen => (
documentation => 'Specify a number of child processes',
);
- has title => (
+ has proc_title => (
traits => [qw(Getopt)],
- cmd_aliases => 't',
isa => Str,
is => 'ro',
+ lazy => 1,
+ builder => '_build_proc_title',
documentation => 'Set the process title',
);
+sub _build_proc_title {
+ my ($self) = @_;
+ return sprintf 'perl-fcgi-pm [%s]', $self->application_name;
+}
+
+sub BUILD {
+ my ($self) = @_;
- $self->title;
++ $self->proc_title;
+}
+
+sub _plack_loader_args {
+ my ($self) = shift;
+ return (
+ map { $_->[0] => $self->${ \($_->[1] ? $_->[1]->[0] : $_->[0]) } }
+ Data::OptList::mkopt([
- qw/pidfile listen manager nproc keep_stderr/,
++ qw/pidfile listen manager nproc keep_stderr proc_title/,
+ detach => [ 'daemon' ],
- proc_title => [ 'title' ],
+ ])
+ );
+}
+
sub _application_args {
my ($self) = shift;
return (
$self->listen,
{
- nproc => $self->nproc,
- pidfile => $self->pidfile,
- manager => $self->manager,
- detach => $self->daemon,
+ nproc => $self->nproc,
+ pidfile => $self->pidfile,
+ manager => $self->manager,
+ detach => $self->daemon,
keep_stderr => $self->keeperr,
- title => $self->title,
- proc_title => $self->proc_title,
++ proc_title => $self->proc_title,
}
);
}
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
- -t --title set the process title
+ -? --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
testOption( [ qw/--nproc 6/ ], [undef, opthash(nproc => 6)] );
testOption( [ qw/--n 6/ ], [undef, opthash(nproc => 6)] );
- # title
- testOption( [ qw/--title foo/ ], [undef, opthash(title => 'foo')] );
- testOption( [ qw/-t foo/ ], [undef, opthash(title => 'foo')] );
+ # proc_title
+ testOption( [ qw/--proc_title foo/ ], [undef, opthash(proc_title => 'foo')] );
done_testing;
} "new_with_options";
# First element of RUN_ARGS will be the script name, which we don't care about
shift @TestAppToTestScripts::RUN_ARGS;
+ my $server = pop @TestAppToTestScripts::RUN_ARGS;
+ like ref($server), qr/^Plack::Handler/, 'Is a Plack::Handler';
is_deeply \@TestAppToTestScripts::RUN_ARGS, $resultarray, "is_deeply comparison";
}
# Returns the hash expected when no flags are passed
sub opthash {
return {
- pidfile => undef,
- keep_stderr => undef,
- detach => undef,
- nproc => undef,
- manager => undef,
- proc_title => undef,
+ (map { ($_ => undef) } qw(pidfile keep_stderr detach nproc manager)),
- title => 'perl-fcgi-pm [TestAppToTestScripts]',
++ proc_title => 'perl-fcgi-pm [TestAppToTestScripts]',
@_,
};
}