works but totally wrong
[catagits/Catalyst-Runtime.git] / lib / Catalyst.pm
index 4714ed6..1b3dfaf 100644 (file)
@@ -29,6 +29,7 @@ use Tree::Simple::Visitor::FindByUID;
 use Class::C3::Adopt::NEXT;
 use List::MoreUtils qw/uniq/;
 use attributes;
+use String::RewritePrefix;
 use utf8;
 use Carp qw/croak carp shortmess/;
 use Try::Tiny;
@@ -2552,8 +2553,9 @@ sub setup_engine {
     unless ($engine) {
         $engine = $class->engine_class;
     }
-    $engine = 'Catalyst::Engine::' . $engine
-        unless $engine =~ /^Catalyst::Engine/;
+    else {
+        $engine = String::RewritePrefix->rewrite( { '' => 'Catalyst::Engine::', '+' => '' }, $engine );
+    }
 
     $engine = 'Catalyst::Engine' if $engine eq 'Catalyst::Engine::HTTP';
 
@@ -2591,8 +2593,19 @@ sub setup_engine {
         );
     }
 
+    if ($ENV{MOD_PERL}) {
+        # FIXME - Immutable
+        $class->meta->add_method(handler => sub {
+            my $r = shift;
+            my $app = $class->psgi_app;
+            use Plack::Handler::Apache2;
+            Plack::Handler::Apache2->call_app($r, $app);
+        });
+    }
+
     $class->engine( $engine->new );
     $class->psgi_app( $class->engine->build_psgi_app($class) );
+
 }
 
 =head2 $c->setup_home