BEGIN { require 5.008001; }
-has stack => (is => 'rw');
-has stash => (is => 'rw');
-has state => (is => 'rw');
-has stats => (is => 'rw');
-has action => (is => 'rw');
-has counter => (is => 'rw');
-has request => (is => 'rw');
-has response => (is => 'rw');
+has stack => (is => 'rw');
+has stash => (is => 'rw');
+has state => (is => 'rw');
+has stats => (is => 'rw');
+has action => (is => 'rw');
+has counter => (is => 'rw');
+has request => (is => 'rw');
+has response => (is => 'rw');
has namespace => (is => 'rw');
our $RECURSION = 1000;
our $DETACH = "catalyst_detach\n";
+#I imagine that very few of these really need to be class variables. if any.
+#maybe we should just make them attributes with a default?
__PACKAGE__->mk_classdata($_)
for qw/components arguments dispatcher engine log dispatcher_class
engine_class context_class request_class response_class stats_class
my $caller = caller(0);
#why does called have to ISA Catalyst and ISA Controller ?
+ #Convert test suite to not use the behavior where Myapp ISA Controller
+ # after that is done we can eliminate that little mess.
unless ( $caller->isa('Catalyst') ) {
no strict 'refs';
if( $caller->can('meta') ){
my @superclasses = ($caller->meta->superclasses, $class, 'Catalyst::Controller');
+ #my @superclasses = ($caller->meta->superclasses, $class);
$caller->meta->superclasses(@superclasses);
} else {
push @{"$caller\::ISA"}, $class, 'Catalyst::Controller';
+ #push @{"$caller\::ISA"}, $class;
}
}
}
$COUNT++;
+ #todo: reuse coderef from can
$class->log->_flush() if $class->log->can('_flush');
return $status;
}
sub prepare {
my ( $class, @arguments ) = @_;
+ #moose todo: context_class as attr with default
$class->context_class( ref $class || $class ) unless $class->context_class;
#Moose TODO: if we make empty containers the defaults then that can be
#handled by the context class itself instead of having this here
}
);
+ #surely this is not the most efficient way to do things...
$c->stats($class->stats_class->new)->enable($c->use_stats);
if ( $c->debug ) {
$c->res->headers->header( 'X-Catalyst' => $Catalyst::VERSION );
}
Class::MOP::load_class($dispatcher);
- #unless (Class::Inspector->loaded($dispatcher)) {
- # require Class::Inspector->filename($dispatcher);
- #}
# dispatcher instance
$class->dispatcher( $dispatcher->new );
$home = $env;
}
- unless ($home) {
- $home = Catalyst::Utils::home($class);
- }
+ $home ||= Catalyst::Utils::home($class);
- #I remember recently being scolded for assigning config values like this
if ($home) {
#I remember recently being scolded for assigning config values like this
$class->config->{home} ||= $home;
# no ignore_loaded here, the plugin may already have been
# defined in memory and we don't want to error on "no file" if so
- Catalyst::Utils::ensure_class_loaded( $plugin );
+ Class::MOP::load_class( $plugin );
$proto->_plugins->{$plugin} = 1;
unless ($instant) {