X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FScriptRole.pm;h=4d93e573dd6ff9edbf9a3b82450ab89e86e158e4;hb=b17bc48c698f981642d6f31beaa6bd88f4b279ac;hp=535ed3d68cb819d468e68aa54f4922afe96c16f1;hpb=ad8b4c91d55aed722e199001632029005eeca60d;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst/ScriptRole.pm b/lib/Catalyst/ScriptRole.pm index 535ed3d..4d93e57 100644 --- a/lib/Catalyst/ScriptRole.pm +++ b/lib/Catalyst/ScriptRole.pm @@ -3,6 +3,7 @@ use Moose::Role; use MooseX::Types::Moose qw/Str Bool/; use Pod::Usage; use MooseX::Getopt; +use Plack::Loader; use namespace::autoclean; with 'MooseX::Getopt' => { @@ -55,11 +56,23 @@ sub _application_args { () } +sub _plack_loader_args { + my @app_args = shift->_application_args; + return (port => $app_args[0]); +} + sub _run_application { my $self = shift; my $app = $self->application_name; Class::MOP::load_class($app); - $app->run($self->_application_args); + my $server; + if (my $e = $self->can('_plack_engine_name') ) { + $server = Plack::Loader->load($self->$e, $self->_plack_loader_args); + } + else { + $server = Plack::Loader->auto($self->_plack_loader_args); + } + $app->run($self->_application_args, $server); } 1;