X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst.pm;h=2d828b113094ec54aa86ef1d98db67ac5dc4537e;hb=f2ceb02dd49d80f5c4e38cd8cb80ff720149d5bf;hp=2568fdd6411c6f6032c842d7d19baa85f8a21c81;hpb=2e1f92a3602e2ff4bad339c31b5d459a0f5032f2;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst.pm b/lib/Catalyst.pm index 2568fdd..2d828b1 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.89002'; +our $VERSION = '5.90002'; sub import { my ( $class, @arguments ) = @_; @@ -1123,7 +1123,7 @@ sub setup { $class->setup_plugins( delete $flags->{plugins} ); $class->setup_dispatcher( delete $flags->{dispatcher} ); if (my $engine = delete $flags->{engine}) { - $class->log->warn("Specifying the engine in ->setup is no longer supported, XXX FIXME"); + $class->log->warn("Specifying the engine in ->setup is no longer supported, see Catalyst::Upgrading"); } $class->setup_engine(); $class->setup_stats( delete $flags->{stats} ); @@ -1866,6 +1866,7 @@ sub finalize_headers { $response->body( qq{
This item has moved here.
} ); + $response->content_type('text/html; charset=utf-8'); } } @@ -2603,35 +2604,45 @@ Sets up engine. =cut sub engine_class { - my $class = shift; - $class->engine_loader->catalyst_engine_class(@_); + my ($class, $requested_engine) = @_; + + if (!$class->engine_loader || $requested_engine) { + $class->engine_loader( + Catalyst::EngineLoader->new({ + application_name => $class, + (defined $requested_engine + ? (requested_engine => $requested_engine) : ()), + }), + ); + } + $class->engine_loader->catalyst_engine_class; } sub setup_engine { my ($class, $requested_engine) = @_; - $class->engine_loader( - Catalyst::EngineLoader->new({ - application_name => $class, - (defined $requested_engine - ? (requested_engine => $requested_engine) : ()), - }), - ); + my $engine = $class->engine_class($requested_engine); # Don't really setup_engine -- see _setup_psgi_app for explanation. return if $class->loading_psgi_file; - my $engine = $class->engine_class; Class::MOP::load_class($engine); if ($ENV{MOD_PERL}) { my $apache = $class->engine_loader->auto; - # FIXME - Immutable - $class->meta->add_method(handler => sub { + + my $meta = find_meta($class); + my $was_immutable = $meta->is_immutable; + my %immutable_options = $meta->immutable_options; + $meta->make_mutable if $was_immutable; + + $meta->add_method(handler => sub { my $r = shift; my $psgi_app = $class->psgi_app; $apache->call_app($r, $psgi_app); }); + + $meta->make_immutable(%immutable_options) if $was_immutable; } $class->engine( $engine->new ); @@ -2716,34 +2727,10 @@ 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); - $psgi_app = Plack::Middleware::Conditional->wrap( - $psgi_app, - condition => $server_matches->(qr/^nginx/), - builder => sub { - my ($to_wrap) = @_; - return sub { - my ($env) = @_; - my $script_name = $env->{SCRIPT_NAME}; - $env->{PATH_INFO} =~ s/^$script_name//g; - return $to_wrap->($env); - }; - }, - ); - # we're applying this unconditionally as the middleware itself already makes # sure it doesn't fuck things up if it's not running under one of the right # IIS versions @@ -3051,8 +3038,46 @@ to be shown in hit debug tables in the test server. =item * C