Bump version numbers to final 5.90000
[catagits/Catalyst-Runtime.git] / lib / Catalyst / EngineLoader.pm
index 3499b50..36cf016 100644 (file)
@@ -12,6 +12,18 @@ has application_name => (
     required => 1,
 );
 
+has requested_engine => (
+    is        => 'ro',
+    isa       => 'Str',
+    predicate => 'has_requested_engine',
+);
+
+sub needs_psgi_engine_compat_hack {
+    my ($self) = @_;
+    return $self->has_requested_engine
+        && $self->requested_engine eq 'PSGI';
+}
+
 has catalyst_engine_class => (
     isa => 'Str',
     is => 'rw',
@@ -21,11 +33,26 @@ has catalyst_engine_class => (
 
 sub _guess_catalyst_engine_class {
     my $self = shift;
-    my $old_engine = Catalyst::Utils::env_value($self->application_name, 'ENGINE');
+    my $old_engine = $self->has_requested_engine
+        ? $self->requested_engine
+        : Catalyst::Utils::env_value($self->application_name, 'ENGINE');
     if (!defined $old_engine) {
         return 'Catalyst::Engine';
     }
-    elsif ($old_engine =~ /^(CGI|FCGI|HTTP|Apache.*)$/) {
+    elsif ($old_engine eq 'PSGI') {
+        ## If we are running under plackup let the Catalyst::Engine::PSGI
+        ## continue to run, but warn.
+        warn <<"EOW";
+You are running Catalyst::Engine::PSGI, which is considered a legacy engine for
+this version of Catalyst.  We will continue running and use your existing psgi
+file, but it is recommended to perform the trivial upgrade process, which will
+leave you with less code and a forward path.
+
+Please review Catalyst::Upgrading
+EOW
+        return 'Catalyst::Engine::' . $old_engine;
+    }
+    elsif ($old_engine =~ /^(CGI|FastCGI|HTTP|Apache.*)$/) {
         return 'Catalyst::Engine';
     }
     else {
@@ -68,9 +95,15 @@ around guess => sub {
     my $old_engine = Catalyst::Utils::env_value($self->application_name, 'ENGINE');
     if (!defined $old_engine) { # Not overridden
     }
-    elsif ($old_engine =~ /^(CGI|FCGI|HTTP|Apache.*)$/) {
+    elsif ($old_engine =~ /^(PSGI|CGI|Apache.*)$/) {
         # Trust autodetect
     }
+    elsif ($old_engine eq 'HTTP') {
+        $engine = 'Standalone';
+    }
+    elsif ($old_engine eq 'FastCGI') {
+        $engine = 'FCGI';
+    }
     elsif ($old_engine eq "HTTP::Prefork") { # Too bad if you're customising, we don't handle options
                                              # write yourself a script to collect and pass in the options
         $engine = "Starman";
@@ -117,4 +150,10 @@ Catalyst Contributors, see Catalyst.pm
 This library is free software. You can redistribute it and/or modify it under
 the same terms as Perl itself.
 
+=begin Pod::Coverage
+
+needs_psgi_engine_compat_hack
+
+=end Pod::Coverage
+
 =cut