whole new core for private action inheritance
[catagits/Catalyst-Runtime.git] / lib / Catalyst.pm
index d205183..e2fac8a 100644 (file)
@@ -5,9 +5,9 @@ use base 'Class::Data::Inheritable';
 use UNIVERSAL::require;
 use Catalyst::Log;
 
-__PACKAGE__->mk_classdata($_) for qw/_config log/;
+__PACKAGE__->mk_classdata($_) for qw/_config engine log/;
 
-our $VERSION = '4.28';
+our $VERSION = '5.00';
 our @ISA;
 
 =head1 NAME
@@ -141,14 +141,14 @@ sub import {
     my ( $self, @options ) = @_;
     my $caller = caller(0);
 
-    # Class
-    {
+    unless ( $caller->isa($self) ) {
         no strict 'refs';
-        *{"$caller\::handler"} =
-          sub { Catalyst::Engine::handler( $caller, @_ ) };
         push @{"$caller\::ISA"}, $self;
     }
-    $self->log( Catalyst::Log->new );
+
+    unless ( $caller->log ) {
+        $caller->log( Catalyst::Log->new );
+    }
 
     # Options
     my $engine =
@@ -157,7 +157,7 @@ sub import {
         if (/^\-Debug$/) {
             no warnings;
             no strict 'refs';
-            *{"$self\::debug"} = sub { 1 };
+            *{"$caller\::debug"} = sub { 1 };
             $caller->log->debug('Debug messages enabled');
         }
         elsif (/^-Engine=(.*)$/) { $engine = "Catalyst::Engine::$1" }
@@ -188,9 +188,26 @@ sub import {
         no strict 'refs';
         push @{"$caller\::ISA"}, $engine;
     }
+    $caller->engine($engine);
     $caller->log->debug(qq/Loaded engine "$engine"/) if $caller->debug;
 }
 
+=item $c->engine
+
+Contains the engine class.
+
+=item $c->log
+
+Contains the logging object.  Unless it is already set Catalyst sets this up with a
+C<Catalyst::Log> object.  To use your own log class:
+
+    $c->log( MyLogger->new );
+    $c->log->info("now logging with my own logger!");
+
+Your log class should implement the methods described in the C<Catalyst::Log>
+man page.
+
+
 =back
 
 =head1 SUPPORT
@@ -215,9 +232,10 @@ Sebastian Riedel, C<sri@oook.de>
 
 =head1 THANK YOU
 
-Andrew Ruthven, Christian Hansen, Christopher Hicks, Danijel Milicevic,
-David Naughton, Gary Ashton Jones, Jesse Sheidlower, Johan Lindstrom,
-Marcus Ramberg, Tatsuhiko Miyagawa and all the others who've helped.
+Andrew Ford, Andrew Ruthven, Christian Hansen, Christopher Hicks,
+Dan Sully, Danijel Milicevic, David Naughton, Gary Ashton Jones,
+Jesse Sheidlower, Johan Lindstrom, Marcus Ramberg, Tatsuhiko Miyagawa
+and all the others who've helped.
 
 =head1 LICENSE