X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst.pm;h=64318c9ea74f2008ddde05b8f40a060b70efe8c4;hb=6e0c45c94afaebb235b25a27f36b7c92dad45c34;hp=f1f2ebe96254d3cba94f899a4ed8cdea6d3b5170;hpb=a9dc674c99f36ff40d94b80753a1504074ba5e22;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst.pm b/lib/Catalyst.pm index f1f2ebe..64318c9 100644 --- a/lib/Catalyst.pm +++ b/lib/Catalyst.pm @@ -426,6 +426,7 @@ sub uri_for { # massage match, empty if absolute path $match =~ s/^\///; $match .= '/' if $match; + $path ||= ''; $match = '' if $path =~ /^\//; $path =~ s/^\///; @@ -749,6 +750,18 @@ Dispatch request to actions. sub dispatch { my $c = shift; $c->dispatcher->dispatch( $c, @_ ) } +=item dump_these + +Returns a list of 2-element array references (name, structure) pairs that will +be dumped on the error page in debug mode. + +=cut + +sub dump_these { + my $c = shift; + [ Request => $c->req ], [ Response => $c->res ], [ Stash => $c->stash ],; +} + =item $c->execute($class, $coderef) Execute a coderef in given class and catch exceptions. @@ -784,7 +797,11 @@ sub execute { { my ( $elapsed, @state ) = $c->benchmark( $code, $class, $c, @{ $c->req->args } ); - push @{ $c->{stats} }, [ $action, sprintf( '%fs', $elapsed ) ]; + unless ( ( $code->name =~ /^_.*/ ) + && ( !$c->config->{show_internal_actions} ) ) + { + push @{ $c->{stats} }, [ $action, sprintf( '%fs', $elapsed ) ]; + } $c->state(@state); } else { @@ -1469,6 +1486,38 @@ qq/Couldn't load engine "$engine" (maybe you forgot to install it?), "$@"/ ); } + # check for old engines that are no longer compatible + my $old_engine; + if ( $engine->isa('Catalyst::Engine::Apache') + && !Catalyst::Engine::Apache->VERSION ) + { + $old_engine = 1; + } + + elsif ( $engine->isa('Catalyst::Engine::Server::Base') + && Catalyst::Engine::Server->VERSION le '0.02' ) + { + $old_engine = 1; + } + + elsif ($engine->isa('Catalyst::Engine::HTTP::POE') + && $engine->VERSION eq '0.01' ) + { + $old_engine = 1; + } + + elsif ($engine->isa('Catalyst::Engine::Zeus') + && $engine->VERSION eq '0.01' ) + { + $old_engine = 1; + } + + if ($old_engine) { + Catalyst::Exception->throw( message => + qq/Engine "$engine" is not supported by this version of Catalyst/ + ); + } + # engine instance $class->engine( $engine->new ); }