--- /dev/null
+MYMETA.yml
+MYMETA.json
+cover_db
+META.yml
+Makefile
+blib
+inc
+pm_to_blib
+MANIFEST
+Makefile.old
+CatalystX-Script-Server-Starman-*
+
--- /dev/null
+.git/
+blib
+pm_to_blib
+MANIFEST.bak
+MANIFEST.SKIP~
+cover_db
+Makefile$
+Makefile.old$
+^CatalystX-Script-Server-Starman-
+^.gitignore
+
--- /dev/null
+use strict;
+use warnings;
+use inc::Module::Install 0.91;
+use Module::Install::AuthorRequires;
+use Module::Install::AuthorTests;
+
+name 'CatalystX-Script-Server-Starman';
+all_from 'lib/CatalystX/Script/Server/Starman.pm';
+
+requires 'Moose';
+requires 'namespace::autoclean';
+
+build_requires 'Catalyst::Runtime' => '5.89';
+build_requires 'Test::WWW::Mechanize::Catalyst';
+build_requires 'Test::More' => '0.88';
+
+author_requires 'Test::Pod::Coverage' => '1.04';
+author_requires 'Test::Pod' => '1.14';
+
+author_tests 't/author';
+
+resources repository => 'git://somewhere.com/myproject.git';
+
+if ($Module::Install::AUTHOR) {
+ system("pod2text lib/CatalystX/Script/Server/Starman.pm > README")
+ and die $!;
+}
+
+WriteAll();
--- /dev/null
+NAME
+ CatalystX::Script::Server::Starman - Replace the development server with
+ Starman
+
+SYNOPSIS
+ myapp_server.pl [options]
+
+ -d --debug force debug mode
+ -f --fork handle each request in a new process
+ (defaults to false)
+ -? --help display this help and exits
+ -h --host host (defaults to all)
+ -p --port port (defaults to 3000)
+ --follow_symlinks follow symlinks in search directories
+ (defaults to false. this is a no-op on Win32)
+ --background run the process in the background
+ --pidfile specify filename for pid file
+ --workers Initial number of workers to spawn (defaults to 5)
+ --min_servers Minimum number of worker processes runnning
+ --min_spare_servers Minimum number of spare workers (more are forked
+ if there are less spare than this)
+ --max_spare_servers Maximum number of spare workers (workers are killed
+ if there are more spare than this)
+ --max_servers Maximum number of workers in total.
+ --max_requests Maximum number of requests each worker will handle
+ --backlog Number of backlogged connections allowed
+ --user User to run as
+ --group Group to run as
+
+ See also:
+ perldoc Starman
+ perldoc plackup
+ perldoc Catalyst::PSGI
+
+DESCRIPTION
+ A Catalyst extension to replace the development server with Starman.
+
+ This module replaces the functionality of
+ Catalyst::Engine::HTTP::Prefork, which is now deprecated.
+
+ It provides access to the prefork engine specific options which were
+ previously added by hacking your server script.
+
+Adding this to your application
+ Just write a server script in your application which inherits from this
+ package.
+
+ For example:
+
+ package MyApp::Script::Server;
+ use Moose;
+ use namespace::autoclean;
+
+ extends 'CatalystX::Script::Server::Starman';
+
+ 1;
+
+SEE ALSO
+ plackup - can be used to start your application ".psgi" under Starman
+
+ Catalyst::PSGI
+
+AUTHOR
+ Tomas Doran (t0m) "<bobtfish@bobtfish.net"
+
+COPYRIGHT & LICENSE
+ Copyright 2009 the above author(s).
+
+ This sofware is free software, and is licensed under the same terms as
+ perl itself.
+
--- /dev/null
+package CatalystX::Script::Server::Starman;
+use Moose;
+use MooseX::Types::Moose qw/ Str Int /;
+use Pod::Usage;
+use Pod::Find qw(pod_where);
+use namespace::autoclean;
+
+our $VERSION = '0.01';
+
+extends 'Catalyst::Script::Server';
+
+has '+fork' => ( default => 1, init_arg => undef );
+
+has [qw/ keepalive restart restart_delay restart_regex restart_directory/] => ( init_arg => undef, is => 'ro' );
+
+has workers => (
+ isa => Int,
+ is => 'ro',
+ default => 5,
+);
+
+has [qw/
+ min_servers
+ min_spare_servers
+ max_spare_servers
+ max_servers
+ max_requests
+ backlog
+/] => ( isa => Int, is => 'ro' );
+
+has [qw/
+ user
+ group
+/] => ( isa => Str, is => 'ro' );
+
+around _plack_loader_args => sub {
+ my ($orig, $self, @args) = @_;
+ my %out = $self->$orig(@args);
+ foreach my $key (qw/
+ workers
+ min_servers
+ min_spare_servers
+ max_spare_servers
+ max_servers
+ max_requests
+ backlog
+ user
+ group
+ /) {
+ $out{$key} = $self->$key();
+ }
+ return %out;
+};
+
+sub _getopt_full_usage {
+ my $self = shift;
+ pod2usage( -input => pod_where({-inc => 1}, __PACKAGE__), -verbose => 2 );
+ exit 0;
+}
+
+1;
+
+=head1 NAME
+
+CatalystX::Script::Server::Starman - Replace the development server with Starman
+
+=head1 SYNOPSIS
+
+ myapp_server.pl [options]
+
+ -d --debug force debug mode
+ -f --fork handle each request in a new process
+ (defaults to false)
+ -? --help display this help and exits
+ -h --host host (defaults to all)
+ -p --port port (defaults to 3000)
+ --follow_symlinks follow symlinks in search directories
+ (defaults to false. this is a no-op on Win32)
+ --background run the process in the background
+ --pidfile specify filename for pid file
+ --workers Initial number of workers to spawn (defaults to 5)
+ --min_servers Minimum number of worker processes runnning
+ --min_spare_servers Minimum number of spare workers (more are forked
+ if there are less spare than this)
+ --max_spare_servers Maximum number of spare workers (workers are killed
+ if there are more spare than this)
+ --max_servers Maximum number of workers in total.
+ --max_requests Maximum number of requests each worker will handle
+ --backlog Number of backlogged connections allowed
+ --user User to run as
+ --group Group to run as
+
+ See also:
+ perldoc Starman
+ perldoc plackup
+ perldoc Catalyst::PSGI
+
+=head1 DESCRIPTION
+
+A Catalyst extension to replace the development server with L<Starman>.
+
+This module replaces the functionality of L<Catalyst::Engine::HTTP::Prefork>,
+which is now deprecated.
+
+It provides access to the prefork engine specific options which were previously
+added by hacking your server script.
+
+=head1 Adding this to your application
+
+Just write a server script in your application which inherits from this
+package.
+
+For example:
+
+ package MyApp::Script::Server;
+ use Moose;
+ use namespace::autoclean;
+
+ extends 'CatalystX::Script::Server::Starman';
+
+ 1;
+
+=head1 SEE ALSO
+
+L<plackup> - can be used to start your application C<.psgi> under Starman
+
+L<Catalyst::PSGI>
+
+=head1 AUTHOR
+
+Tomas Doran (t0m) C<< <bobtfish@bobtfish.net >>
+
+=head1 COPYRIGHT & LICENSE
+
+Copyright 2009 the above author(s).
+
+This sofware is free software, and is licensed under the same terms as perl itself.
+
+=cut
+
--- /dev/null
+#!/usr/bin/env perl
+
+use strict;
+use warnings;
+use Test::More;
+use_ok 'CatalystX::Script::Server::Starman';
+
+done_testing;
--- /dev/null
+#!/usr/bin/env perl
+
+use strict;
+use warnings;
+use Test::More;
+use Test::Pod::Coverage 1.04;
+all_pod_coverage_ok();
--- /dev/null
+#!/usr/bin/env perl
+
+use strict;
+use warnings;
+use Test::More;
+use Test::Pod 1.14;
+all_pod_files_ok();
--- /dev/null
+package TestApp;
+use Moose;
+use namespace::autoclean;
+
+use Catalyst;
+
+extends 'Catalyst';
+
+__PACKAGE__->setup;
+
+1;
--- /dev/null
+package TestApp::Controller::Root;
+use Moose;
+use namespace::autoclean;
+
+BEGIN { extends 'Catalyst::Controller' }
+
+__PACKAGE__->config(namespace => q{});
+
+sub base : Chained('/') PathPart('') CaptureArgs(0) {}
+
+# your actions replace this one
+sub main : Chained('base') PathPart('') Args(0) {
+ my ($self, $ctx) = @_;
+ $ctx->res->body('<h1>It works</h1>');
+}
+
+__PACKAGE__->meta->make_immutable;
--- /dev/null
+#!/usr/bin/env perl
+
+BEGIN {
+ $ENV{CATALYST_SCRIPT_GEN} = 40;
+}
+
+use Catalyst::ScriptRunner;
+Catalyst::ScriptRunner->run('TestApp', 'Server');
+
+1;
--- /dev/null
+#!/usr/bin/env perl
+
+use strict;
+use warnings;
+
+use FindBin;
+use lib "$FindBin::Bin/..";
+use Catalyst::Test 'TestApp';
+
+print request($ARGV[0])->content . "\n";
+
+1;
--- /dev/null
+#!/usr/bin/env perl
+
+use strict;
+use warnings;
+use Test::More;
+
+# setup library path
+use FindBin qw($Bin);
+use lib "$Bin/lib";
+
+# make sure testapp works
+use ok 'TestApp';
+
+# a live test against TestApp, the test application
+use Test::WWW::Mechanize::Catalyst 'TestApp';
+my $mech = Test::WWW::Mechanize::Catalyst->new;
+$mech->get_ok('http://localhost/', 'get main page');
+$mech->content_like(qr/it works/i, 'see if it has our text');
+
+done_testing;