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