use strict;
use base 'Catalyst::Component';
use bytes;
-use UNIVERSAL::require;
use Catalyst::Exception;
use Catalyst::Log;
use Catalyst::Request;
use utf8;
use Carp qw/croak/;
+BEGIN { require 5.008001; }
+
__PACKAGE__->mk_accessors(
qw/counter request response state action stack namespace stats/
);
=head2 -Debug
-Enables debug output.
+Enables debug output. You can also force this setting from the system
+environment with CATALYST_DEBUG or <MYAPP>_DEBUG. The environment settings
+override the app, with <MYAPP>_DEBUG having highest priority.
=head2 -Engine
my $c = shift;
if (@_) {
my $stash = @_ > 1 ? {@_} : $_[0];
- while ( my ( $key, $val ) = each %$stash ) {
- $c->{stash}->{$key} = $val;
+ croak('stash takes a hash or hashref') unless ref $stash;
+ foreach my $key ( keys %$stash ) {
+ $c->{stash}->{$key} = $stash->{$key};
}
}
return $c->{stash};
$c->model('Foo')->do_stuff;
If the name is omitted, it will look for a config setting 'default_model',
-or check if there is only one model, and forward to it if that's the case.
+or check if there is only one view, and return it if that's the case.
=cut
Overload to enable debug messages (same as -Debug option).
+Note that this is a static method, not an accessor and should be overloaded
+by declaring "sub debug { 1 }" in your MyApp.pm, not by calling $c->debug(1).
+
=cut
sub debug { 0 }
$dispatcher = $class->dispatcher_class;
}
- $dispatcher->require;
-
- if ($@) {
- Catalyst::Exception->throw(
- message => qq/Couldn't load dispatcher "$dispatcher", "$@"/ );
+ unless (Class::Inspector->loaded($dispatcher)) {
+ require Class::Inspector->filename($dispatcher);
}
# dispatcher instance
$engine = $class->engine_class;
}
- $engine->require;
-
- if ($@) {
- Catalyst::Exception->throw( message =>
-qq/Couldn't load engine "$engine" (maybe you forgot to install it?), "$@"/
- );
+ unless (Class::Inspector->loaded($engine)) {
+ require Class::Inspector->filename($engine);
}
# check for old engines that are no longer compatible
my ( $proto, $plugin, $instant ) = @_;
my $class = ref $proto || $proto;
- $plugin->require;
-
- if ( my $error = $@ ) {
- my $type = $instant ? "instant " : '';
- Catalyst::Exception->throw(
- message => qq/Couldn't load ${type}plugin "$plugin", $error/ );
+ unless (Class::Inspector->loaded($plugin)) {
+ require Class::Inspector->filename($plugin);
}
$proto->_plugins->{$plugin} = 1;