use UNIVERSAL::require;
use Catalyst::Log;
-__PACKAGE__->mk_classdata($_) for qw/_config log/;
+__PACKAGE__->mk_classdata($_) for qw/_config engine log/;
-our $VERSION = '4.26';
+our $VERSION = '5.00';
our @ISA;
=head1 NAME
See L<Catalyst::Manual> for more documentation.
-Omit the Catalyst::Plugin:: prefix from plugins.
-So Catalyst::Plugin::My::Module becomes My::Module.
+Catalyst plugins can be loaded by naming them as arguments to the "use Catalyst" statement.
+Omit the C<Catalyst::Plugin::> prefix from the plugin name,
+so C<Catalyst::Plugin::My::Module> becomes C<My::Module>.
use Catalyst 'My::Module';
-You can also set special flags like -Debug and -Engine.
+Special flags like -Debug and -Engine can also be specifed as arguments when
+Catalyst is loaded:
use Catalyst qw/-Debug My::Module/;
-The position of plugins and flags in the chain is important,
-because they are loaded in the same order they appear.
+The position of plugins and flags in the chain is important, because they are
+loaded in exactly the order that they appear.
-=head2 -Debug
+The following flags are supported:
+
+=over 4
+
+=item -Debug
+
+enables debug output, i.e.:
use Catalyst '-Debug';
-is equivalent to
+this is equivalent to:
use Catalyst;
sub debug { 1 }
-=head2 -Engine
+=item -Engine
Force Catalyst to use a specific engine.
-Omit the Catalyst::Engine:: prefix.
+Omit the C<Catalyst::Engine::> prefix of the engine name, i.e.:
use Catalyst '-Engine=CGI';
-=head2 METHODS
+=back
+
+=head1 METHODS
+
+=over 4
-=head3 debug
+=item debug
Overload to enable debug messages.
sub debug { 0 }
-=head3 config
+=item config
Returns a hashref containing your applications settings.
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 =
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" }
else {
$caller->log->debug(qq/Loaded plugin "$plugin"/)
if $caller->debug;
- unshift @ISA, $plugin;
+ no strict 'refs';
+ push @{"$caller\::ISA"}, $plugin;
}
}
}
if $ENV{CATALYST_ENGINE};
$engine->require;
die qq/Couldn't load engine "$engine", "$@"/ if $@;
- push @ISA, $engine;
+ {
+ 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
IRC:
=head1 THANK YOU
-Andrew Ruthven, 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