has listen => (
traits => [qw(Getopt)],
cmd_aliases => 'l',
- isa => Int,
+ isa => Str,
is => 'ro',
documentation => 'Specify a listening port/socket',
);
isa => Bool,
is => 'ro',
cmd_aliases => 'd',
- documentation => 'Daemonize',
+ documentation => 'Daemonize (go into the background)',
);
has manager => (
traits => [qw(Getopt)],
isa => Str,
is => 'ro',
- cmd_aliases => 'm',
- documentation => 'Use a different FastCGI manager', # FIXME
+ cmd_aliases => 'M',
+ documentation => 'Use a different FastCGI process manager class',
);
-has keep_stderr => (
+has keeperr => (
traits => [qw(Getopt)],
- cmd_aliases => 'std',
+ cmd_aliases => 'e',
isa => Bool,
is => 'ro',
documentation => 'Log STDERR',
has nproc => (
traits => [qw(Getopt)],
- cmd_aliases => 'np',
+ cmd_aliases => 'n',
isa => Int,
is => 'ro',
- documentation => 'Specify an nproc', # FIXME
+ documentation => 'Specify a number of child processes',
);
has detach => (
pidfile => $self->pidfile,
manager => $self->manager,
detach => $self->detach,
- keep_stderr => $self->keep_stderr,
+ keep_stderr => $self->keeperr,
}
);
}
=head1 SYNOPSIS
-See L<Catalyst>.
+ 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
-FIXME
+Run a Catalyst application as fastcgi.
=head1 AUTHORS
}
use Moose;
-use Catalyst::Restarter;
use MooseX::Types::Moose qw/ArrayRef Str Bool Int/;
use namespace::autoclean;
has host => (
traits => [qw(Getopt)],
+ cmd_aliases => 'h',
isa => Str,
is => 'ro',
default => 'localhost',
- documentation => 'Specify a host for the server to run on',
+ documentation => 'Specify an IP on this host for the server to bind to',
);
has fork => (
cmd_aliases => 'f',
isa => Bool,
is => 'ro',
- documentation => 'Fork the server',
+ default => 0,
+ documentation => 'Fork the server to be able to serve multiple requests at once',
);
has port => (
isa => Int,
is => 'ro',
default => 3000,
- documentation => 'Specify a different listening port',
+ documentation => 'Specify a different listening port (to the default port 3000)',
);
has pidfile => (
cmd_aliases => 'k',
isa => Bool,
is => 'ro',
- documentation => 'Server keepalive',
-
+ default => 0,
+ documentation => 'Support keepalive',
);
has background => (
cmd_aliases => 'bg',
isa => Bool,
is => 'ro',
+ default => 0,
documentation => 'Run in the background',
);
cmd_aliases => 'r',
isa => Bool,
is => 'ro',
- documentation => 'use Catalyst::Restarter to detect code changes',
+ default => 0,
+ documentation => 'use Catalyst::Restarter to detect code changes and restart the application',
);
has restart_directory => (
cmd_aliases => 'rdir',
isa => ArrayRef[Str],
is => 'ro',
- predicate => '_has_restart_directory',
documentation => 'Restarter directory to watch',
+ predicate => '_has_restart_directory',
);
has restart_delay => (
traits => [qw(Getopt)],
- cmd_aliases => 'rdel',
+ cmd_aliases => 'rd',
isa => Int,
is => 'ro',
- predicate => '_has_restart_delay',
documentation => 'Set a restart delay',
+ predicate => '_has_restart_delay',
);
has restart_regex => (
traits => [qw(Getopt)],
- cmd_aliases => 'rxp',
+ cmd_aliases => 'rr',
isa => Str,
is => 'ro',
- predicate => '_has_restart_regex',
documentation => 'Restart regex',
+ predicate => '_has_restart_regex',
);
has follow_symlinks => (
cmd_aliases => 'sym',
isa => Bool,
is => 'ro',
- predicate => '_has_follow_symlinks',
+ default => 0,
documentation => 'Follow symbolic links',
-
);
sub run {
my ($self) = shift;
- if ( $self->debug ) {
- $ENV{CATALYST_DEBUG} = 1;
- }
-
- # If we load this here, then in the case of a restarter, it does not
- # need to be reloaded for each restart.
- require Catalyst;
-
- # If this isn't done, then the Catalyst::Devel tests for the restarter
- # fail.
- $| = 1 if $ENV{HARNESS_ACTIVE};
+ local $ENV{CATALYST_DEBUG} = 1
+ if $self->debug;
if ( $self->restart ) {
die "Cannot run in the background and also watch for changed files.\n"
if $self->background;
+ # If we load this here, then in the case of a restarter, it does not
+ # need to be reloaded for each restart.
+ require Catalyst;
+
+ # If this isn't done, then the Catalyst::Devel tests for the restarter
+ # fail.
+ $| = 1 if $ENV{HARNESS_ACTIVE};
+
require Catalyst::Restarter;
my $subclass = Catalyst::Restarter->pick_subclass;
my %args;
$args{follow_symlinks} = $self->follow_symlinks
- if $self->_has_follow_symlinks;
+ if $self->follow_symlinks;
$args{directories} = $self->restart_directory
if $self->_has_restart_directory;
$args{sleep_interval} = $self->restart_delay
$testopts = opthash();
$testopts->{background} = 1;
testOption( [ qw/--background/ ], ['3000', 'localhost', $testopts] );
-
+
# Restart stuff requires a threaded perl, apparently.
# restart -r -restart --restart -R --restart
# restart dly -rd -restartdelay --rdel --restart_delay
# Returns the hash expected when no flags are passed
sub opthash {
return { 'pidfile' => undef,
- 'fork' => undef,
- 'follow_symlinks' => undef,
- 'background' => undef,
- 'keepalive' => undef,
+ 'fork' => 0,
+ 'follow_symlinks' => 0,
+ 'background' => 0,
+ 'keepalive' => 0,
}
}