Version 0.02
[catagits/CatalystX-Script-Server-Starman.git] / lib / CatalystX / Script / Server / Starman.pm
CommitLineData
7d386bce 1package CatalystX::Script::Server::Starman;
2use Moose;
3use MooseX::Types::Moose qw/ Str Int /;
4use Pod::Usage;
5use Pod::Find qw(pod_where);
6use namespace::autoclean;
7
3b5703c8 8our $VERSION = '0.02';
7d386bce 9
10extends 'Catalyst::Script::Server';
11
12has '+fork' => ( default => 1, init_arg => undef );
13
14has [qw/ keepalive restart restart_delay restart_regex restart_directory/] => ( init_arg => undef, is => 'ro' );
15
16has workers => (
17 isa => Int,
18 is => 'ro',
19 default => 5,
20);
21
22has [qw/
23 min_servers
24 min_spare_servers
25 max_spare_servers
26 max_servers
27 max_requests
28 backlog
29/] => ( isa => Int, is => 'ro' );
30
31has [qw/
32 user
33 group
34/] => ( isa => Str, is => 'ro' );
35
36around _plack_loader_args => sub {
37 my ($orig, $self, @args) = @_;
38 my %out = $self->$orig(@args);
39 foreach my $key (qw/
40 workers
41 min_servers
42 min_spare_servers
43 max_spare_servers
44 max_servers
45 max_requests
46 backlog
47 user
48 group
49 /) {
50 $out{$key} = $self->$key();
51 }
52 return %out;
53};
54
55sub _getopt_full_usage {
56 my $self = shift;
57 pod2usage( -input => pod_where({-inc => 1}, __PACKAGE__), -verbose => 2 );
58 exit 0;
59}
60
611;
62
63=head1 NAME
64
65CatalystX::Script::Server::Starman - Replace the development server with Starman
66
67=head1 SYNOPSIS
68
69 myapp_server.pl [options]
70
71 -d --debug force debug mode
72 -f --fork handle each request in a new process
73 (defaults to false)
74 -? --help display this help and exits
75 -h --host host (defaults to all)
76 -p --port port (defaults to 3000)
77 --follow_symlinks follow symlinks in search directories
78 (defaults to false. this is a no-op on Win32)
79 --background run the process in the background
80 --pidfile specify filename for pid file
81 --workers Initial number of workers to spawn (defaults to 5)
82 --min_servers Minimum number of worker processes runnning
83 --min_spare_servers Minimum number of spare workers (more are forked
84 if there are less spare than this)
85 --max_spare_servers Maximum number of spare workers (workers are killed
86 if there are more spare than this)
87 --max_servers Maximum number of workers in total.
88 --max_requests Maximum number of requests each worker will handle
89 --backlog Number of backlogged connections allowed
90 --user User to run as
91 --group Group to run as
92
93 See also:
94 perldoc Starman
95 perldoc plackup
96 perldoc Catalyst::PSGI
97
98=head1 DESCRIPTION
99
100A Catalyst extension to replace the development server with L<Starman>.
101
102This module replaces the functionality of L<Catalyst::Engine::HTTP::Prefork>,
103which is now deprecated.
104
105It provides access to the prefork engine specific options which were previously
106added by hacking your server script.
107
108=head1 Adding this to your application
109
84558520 110Just add a server script module to your application which inherits from this
7d386bce 111package.
112
84558520 113L<Catalyst::ScriptRunner> will automatically detect and use it when
114script/myapp_server.pl is started.
115
7d386bce 116For example:
117
118 package MyApp::Script::Server;
119 use Moose;
120 use namespace::autoclean;
121
122 extends 'CatalystX::Script::Server::Starman';
123
124 1;
125
126=head1 SEE ALSO
127
128L<plackup> - can be used to start your application C<.psgi> under Starman
129
130L<Catalyst::PSGI>
131
132=head1 AUTHOR
133
c8759111 134Tomas Doran (t0m) C<< <bobtfish@bobtfish.net> >>
7d386bce 135
136=head1 COPYRIGHT & LICENSE
137
138Copyright 2009 the above author(s).
139
140This sofware is free software, and is licensed under the same terms as perl itself.
141
142=cut
143