X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=blobdiff_plain;f=lib%2FCatalyst.pm;h=53183edded8dd3bc52b9fd3a4bbe4af50f04bdaf;hp=37e0af080b15064a8fc0449930e25dbe766f5e58;hb=7e12141fc6cabc88ab929895a64388ab29e3b8eb;hpb=71ac9a50d280950385f9cb9d1a5ba72dd536b8e6 diff --git a/lib/Catalyst.pm b/lib/Catalyst.pm index 37e0af0..53183ed 100644 --- a/lib/Catalyst.pm +++ b/lib/Catalyst.pm @@ -68,6 +68,7 @@ has request => ( my $composed_request_class = $class->composed_request_class; return $composed_request_class->new( $self->_build_request_constructor_args); }, + predicate => 'has_request', lazy => 1, ); sub _build_request_constructor_args { @@ -113,6 +114,7 @@ has response => ( my $composed_response_class = $class->composed_response_class; return $composed_response_class->new( $self->_build_response_constructor_args); }, + predicate=>'has_response', lazy => 1, ); sub _build_response_constructor_args { @@ -205,7 +207,7 @@ sub composed_stats_class { __PACKAGE__->_encode_check(Encode::FB_CROAK | Encode::LEAVE_SRC); # Remember to update this in Catalyst::Runtime as well! -our $VERSION = '5.90122'; +our $VERSION = '5.90126'; $VERSION = eval $VERSION if $VERSION =~ /_/; # numify for warning-free dev releases sub import { @@ -409,6 +411,10 @@ Returns the current L object, giving access to information about the current client request (including parameters, cookies, HTTP headers, etc.). See L. +There is a predicate method C that returns true if the +request object has been created. This is something you might need to +check if you are writing plugins that run before a request is finalized. + =head2 REQUEST FLOW HANDLING =head2 $c->forward( $action [, \@arguments ] ) @@ -557,6 +563,10 @@ sub go { my $c = shift; $c->dispatcher->go( $c, @_ ) } Returns the current L object, see there for details. +There is a predicate method C that returns true if the +request object has been created. This is something you might need to +check if you are writing plugins that run before a request is finalized. + =head2 $c->stash Returns a hashref to the stash, which may be used to store data and pass @@ -2196,16 +2206,27 @@ sub finalize { $c->log_response; - if ($c->use_stats) { - my $elapsed = $c->stats->elapsed; - my $av = $elapsed == 0 ? '??' : sprintf '%.3f', 1 / $elapsed; - $c->log->info( - "Request took ${elapsed}s ($av/s)\n" . $c->stats->report . "\n" ); - } + $c->log_stats if $c->use_stats; return $c->response->status; } +=head2 $c->log_stats + +Logs statistics. + +=cut + +sub log_stats { + my $c = shift; + + my $elapsed = $c->stats->elapsed; + my $av = $elapsed == 0 ? '??' : sprintf '%.3f', 1 / $elapsed; + $c->log->info( + "Request took ${elapsed}s ($av/s)\n" . $c->stats->report . "\n" ); +} + + =head2 $c->finalize_body Finalizes body. @@ -3467,7 +3488,7 @@ sub apply_default_middlewares { condition => sub { my ($env) = @_; return if $app->config->{ignore_frontend_proxy}; - return $env->{REMOTE_ADDR} eq '127.0.0.1'; + return $env->{REMOTE_ADDR} && $env->{REMOTE_ADDR} eq '127.0.0.1'; }, ); } @@ -5011,6 +5032,8 @@ revmischa: Mischa Spiegelmock Robert Sedlacek +rrwo: Robert Rothenberg + SpiceMan: Marcel Montes sky: Arthur Bergman