X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=blobdiff_plain;f=lib%2FCatalyst.pm;h=615472a0e4f6870a56f3302b563467701ad1c033;hp=6621825f8a580b72cb43815977933db176ce8be9;hb=0cff119a540a3c8961750bd499f4c470771ac342;hpb=3143ee5f686e48785bc13cf756a4dde97aae682e diff --git a/lib/Catalyst.pm b/lib/Catalyst.pm index 6621825..615472a 100644 --- a/lib/Catalyst.pm +++ b/lib/Catalyst.pm @@ -84,7 +84,7 @@ __PACKAGE__->stats_class('Catalyst::Stats'); # Remember to update this in Catalyst::Runtime as well! -our $VERSION = '5.90001'; +our $VERSION = '5.90004'; sub import { my ( $class, @arguments ) = @_; @@ -1347,7 +1347,15 @@ sub uri_for { } my $action = $path; - $path = $c->dispatcher->uri_for_action($action, $captures); + # ->uri_for( $action, \@captures_and_args, \%query_values? ) + if( !@args && $action->number_of_args ) { + my $expanded_action = $c->dispatcher->expand_action( $action ); + + my $num_captures = $expanded_action->number_of_captures; + unshift @args, splice @$captures, $num_captures; + } + + $path = $c->dispatcher->uri_for_action($action, $captures); if (not defined $path) { $c->log->debug(qq/Can't find uri_for action '$action' @$captures/) if $c->debug; @@ -1863,9 +1871,18 @@ sub finalize_headers { if ( !$response->has_body ) { # Add a default body if none is already present - $response->body( - qq{

This item has moved here.

} - ); + $response->body(<<"EOF"); + + + + Moved + + +

This item has moved here.

+ + +EOF + $response->content_type('text/html; charset=utf-8'); } } @@ -1976,7 +1993,7 @@ sub handle_request { return $status; } -=head2 $c->prepare( @arguments ) +=head2 $class->prepare( @arguments ) Creates a Catalyst context from an engine-specific request (Apache, CGI, etc.). @@ -2610,17 +2627,32 @@ sub engine_class { Catalyst::EngineLoader->new({ application_name => $class, (defined $requested_engine - ? (requested_engine => $requested_engine) : ()), + ? (catalyst_engine_class => $requested_engine) : ()), }), ); } + $class->engine_loader->catalyst_engine_class; } sub setup_engine { my ($class, $requested_engine) = @_; - my $engine = $class->engine_class($requested_engine); + my $engine = do { + my $loader = $class->engine_loader; + + if (!$loader || $requested_engine) { + $loader = Catalyst::EngineLoader->new({ + application_name => $class, + (defined $requested_engine + ? (requested_engine => $requested_engine) : ()), + }), + + $class->engine_loader($loader); + } + + $loader->catalyst_engine_class; + }; # Don't really setup_engine -- see _setup_psgi_app for explanation. return if $class->loading_psgi_file; @@ -2726,16 +2758,6 @@ sub apply_default_middlewares { }, ); - my $server_matches = sub { - my ($re) = @_; - return sub { - my ($env) = @_; - my $server = $env->{SERVER_SOFTWARE}; - return unless $server; - return $server =~ $re ? 1 : 0; - }; - }; - # If we're running under Lighttpd, swap PATH_INFO and SCRIPT_NAME # http://lists.scsys.co.uk/pipermail/catalyst/2006-June/008361.html $psgi_app = Plack::Middleware::LighttpdScriptNameFix->wrap($psgi_app);