i want some kick ass tests for this :)
Sebastian Riedel [Sun, 10 Apr 2005 19:03:20 +0000 (19:03 +0000)]
lib/Catalyst.pm
lib/Catalyst/Engine.pm

index d198446..b9cdcb4 100644 (file)
@@ -7,7 +7,7 @@ use Catalyst::Log;
 use Text::ASCIITable;
 use Text::ASCIITable::Wrap 'wrap';
 
-__PACKAGE__->mk_classdata($_) for qw/engine log/;
+__PACKAGE__->mk_classdata($_) for qw/dispatcher engine log/;
 
 our $VERSION = '5.00';
 our @ISA;
@@ -146,7 +146,8 @@ sub import {
         $caller->log->debug('Debug messages enabled');
     }
 
-    my $engine = 'Catalyst::Engine::CGI';
+    my $engine     = 'Catalyst::Engine::CGI';
+    my $dispatcher = 'Catalyst::Dispatcher';
 
     if ( $ENV{MOD_PERL} ) {
 
@@ -168,6 +169,9 @@ sub import {
             *{"$caller\::debug"} = sub { 1 };
             $caller->log->debug('Debug messages enabled');
         }
+        elsif (/^-Dispatcher=(.*)$/) {
+            $dispatcher = "Catalyst::Dispatcher::$1";
+        }
         elsif (/^-Engine=(.*)$/) { $engine = "Catalyst::Engine::$1" }
         elsif (/^-.*$/) { $caller->log->error(qq/Unknown flag "$_"/) }
         else {
@@ -204,6 +208,20 @@ sub import {
     }
     $caller->engine($engine);
     $caller->log->debug(qq/Loaded engine "$engine"/) if $caller->debug;
+
+    # Dispatcher
+    $dispatcher = "Catalyst::Dispatcher::$ENV{CATALYST_DISPATCHER}"
+      if $ENV{CATALYST_DISPATCHER};
+
+    $dispatcher->require;
+    die qq/Couldn't load dispatcher "$dispatcher", "$@"/ if $@;
+    {
+        no strict 'refs';
+        push @{"$caller\::ISA"}, $dispatcher;
+    }
+    $caller->dispatcher($dispatcher);
+    $caller->log->debug(qq/Loaded dispatcher "$dispatcher"/) if $caller->debug;
+
 }
 
 =item $c->engine
index 9971412..33a787b 100644 (file)
@@ -1,8 +1,7 @@
 package Catalyst::Engine;
 
 use strict;
-use base
-  qw/Class::Data::Inheritable Class::Accessor::Fast Catalyst::Dispatcher/;
+use base qw/Class::Data::Inheritable Class::Accessor::Fast/;
 use UNIVERSAL::require;
 use CGI::Cookie;
 use Data::Dumper;