Impoved error messaging when $c->forward to an non loaded class
Christian Hansen [Sun, 24 Apr 2005 20:36:48 +0000 (20:36 +0000)]
lib/Catalyst/Dispatcher.pm

index c3ae865..ea751e5 100644 (file)
@@ -135,9 +135,11 @@ sub forward {
 
     unless ( @{$results} ) {
         my $class = $command || '';
+        my $path  = $class . '.pm';
+        $path =~ s/::/\//g;
 
-        if ( $class =~ /[^\w\:]/ ) {
-            my $error = qq/"$class" is an invalid Class name/;
+        unless ( $INC{ $path } ) {
+            my $error = qq/Unknown class "$class"/;
             $c->error($error);
             $c->log->debug($error) if $c->debug;
             return 0;
@@ -145,7 +147,6 @@ sub forward {
 
         my $method = shift || 'process';
 
-        require $class;
         if ( my $code = $class->can($method) ) {
             $c->actions->{reverse}->{"$code"} = "$class->$method";
             $results = [ [ [ $class, $code ] ] ];