Don't break the calling convention for the run method by making the server the last...
Tomas Doran [Mon, 8 Mar 2010 00:56:38 +0000 (00:56 +0000)]
lib/Catalyst.pm
lib/Catalyst/Engine.pm
lib/Catalyst/ScriptRole.pm

index 06130d1..02b5d60 100644 (file)
@@ -2378,6 +2378,10 @@ sub setup_engine {
     unless ($engine) {
         $engine = $class->engine_class;
     }
+    $engine = 'Catalyst::Engine::' . $engine
+        unless $engine =~ /^Catalyst::Engine/;
+
+    $engine = 'Catalyst::Engine' if $engine eq 'Catalyst::Engine::HTTP';
 
     Class::MOP::load_class($engine);
 
index 0152ebf..e6c5d62 100644 (file)
@@ -752,12 +752,14 @@ run method on the server passed in..
 =cut
 
 sub run {
-    my ($self, $app, $server, @args) = @_;
+    my ($self, $app, @args) = @_;
+    my $server = pop @args if blessed $args[-1];
     $server ||= Plack::Loader->auto(); # We're not being called from a script,
                                        # so auto detect what backend to run on.
                                        # This does *NOT* cover mod_perl.
     # FIXME - Do something sensible with the options we're passed
-    $server->run($self->build_psgi_app($app, @args));
+    my $psgi = $self->build_psgi_app($app, @args);
+    $server->run($psgi);
 }
 
 =head2 build_psgi_app ($app, @args)
index af47fd2..e36ca2f 100644 (file)
@@ -72,7 +72,7 @@ sub _run_application {
     else {
         $server = Plack::Loader->auto($self->_plack_loader_args);
     }
-    $app->run($server, $self->_application_args);
+    $app->run($self->_application_args, $server);
 }
 
 1;