X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FEngine.pm;h=36b839b1f8f3c5ccbc5185a25d678b2b34d01a29;hb=9edb1eb325435873ed55f643d671cb050bd8b659;hp=15f40560db871e634047c52354a50f19624fca13;hpb=db0d17e824f6fbe285e8dbcbab4d36ee5b4c3dae;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst/Engine.pm b/lib/Catalyst/Engine.pm index 15f4056..36b839b 100644 --- a/lib/Catalyst/Engine.pm +++ b/lib/Catalyst/Engine.pm @@ -16,11 +16,6 @@ use Catalyst::Request::Upload; use Catalyst::Response; use Catalyst::Utils; -require Module::Pluggable::Fast; - -# For pretty dumps -$Data::Dumper::Terse = 1; - __PACKAGE__->mk_classdata('components'); __PACKAGE__->mk_accessors(qw/counter depth request response state/); @@ -288,7 +283,12 @@ sub finalize_error { my ( $title, $error, $infos ); if ( $c->debug ) { - $error = join '
', @{ $c->error }; + + # For pretty dumps + local $Data::Dumper::Terse = 1; + $error = join '', + map { '' . encode_entities($_) . '' } + @{ $c->error }; $error ||= 'No output'; $title = $name = "$name on Catalyst $Catalyst::VERSION"; my $req = encode_entities Dumper $c->req; @@ -364,6 +364,12 @@ sub finalize_error { margin: 4px; -moz-border-radius: 10px; } + code.error { + display: block; + margin: 1em 0; + overflow: auto; + white-space: pre; + } @@ -413,12 +419,14 @@ sub handler { my $av = sprintf '%.3f', ( $elapsed == 0 ? '??' : ( 1 / $elapsed ) ); my $t = Text::ASCIITable->new; + undef $t->{tiedarr}; # work-around for a memory leak $t->setCols( 'Action', 'Time' ); $t->setColWidth( 'Action', 64, 1 ); $t->setColWidth( 'Time', 9, 1 ); for my $stat (@stats) { $t->addRow( $stat->[0], $stat->[1] ) } - $class->log->info( "Request took ${elapsed}s ($av/s)\n" . $t->draw ); + $class->log->info( + "Request took ${elapsed}s ($av/s)\n" . $t->draw ); } else { $status = &$handler } @@ -512,6 +520,7 @@ sub prepare { if ( $c->debug && keys %{ $c->req->params } ) { my $t = Text::ASCIITable->new; + undef $t->{tiedarr}; # work-around for a memory leak $t->setCols( 'Key', 'Value' ); $t->setColWidth( 'Key', 37, 1 ); $t->setColWidth( 'Value', 36, 1 ); @@ -670,105 +679,6 @@ Returns a C object. my $res = $c->res; -=item $class->setup - -Setup. - - MyApp->setup; - -=cut - -sub setup { - my $self = shift; - - # Initialize our data structure - $self->components( {} ); - - $self->setup_components; - - if ( $self->debug ) { - my $t = Text::ASCIITable->new; - $t->setOptions( 'hide_HeadRow', 1 ); - $t->setOptions( 'hide_HeadLine', 1 ); - $t->setCols('Class'); - $t->setColWidth( 'Class', 75, 1 ); - $t->addRow($_) for sort keys %{ $self->components }; - $self->log->debug( "Loaded components:\n" . $t->draw ) - if ( @{ $t->{tbl_rows} } ); - } - - # Add our self to components, since we are also a component - $self->components->{$self} = $self; - - $self->setup_actions; - - if ( $self->debug ) { - my $name = $self->config->{name} || 'Application'; - $self->log->info("$name powered by Catalyst $Catalyst::VERSION"); - } -} - -=item $class->setup_components - -Setup components. - -=cut - -sub setup_components { - my $self = shift; - - my $callback = sub { - my ( $component, $context ) = @_; - - unless ( $component->isa('Catalyst::Base') ) { - return $component; - } - - my $suffix = Catalyst::Utils::class2classsuffix($component); - my $config = $self->config->{$suffix} || {}; - - my $instance; - - eval { $instance = $component->new( $context, $config ); }; - - if ( my $error = $@ ) { - - chomp $error; - - Catalyst::Exception->throw( - message => qq/Couldn't instantiate component "$component", "$error"/ - ); - } - - return $instance; - }; - - eval { - Module::Pluggable::Fast->import( - name => '_components', - search => [ - "$self\::Controller", "$self\::C", - "$self\::Model", "$self\::M", - "$self\::View", "$self\::V" - ], - callback => $callback - ); - }; - - if ( my $error = $@ ) { - - chomp $error; - - Catalyst::Exception->throw( - message => qq/Couldn't load components "$error"/ - ); - } - - for my $component ( $self->_components($self) ) { - $self->components->{ ref $component || $component } = $component; - } -} - =item $c->state Contains the return value of the last executed action.