Create myapp.psgi
Florian Ragwitz [Sun, 5 Dec 2010 16:12:11 +0000 (17:12 +0100)]
lib/Catalyst/Helper.pm
share/myapp.psgi.tt [new file with mode: 0644]
t/generated_app.t

index 000b5c0..9eef7c3 100644 (file)
@@ -121,10 +121,9 @@ sub mk_app {
     my $gen_app = ( $self->{scripts} || $self->{makefile} ) ? 0 : 1;
 
     if ($gen_app) {
-        for ( qw/ _mk_dirs _mk_config _mk_appclass _mk_rootclass _mk_readme
-              _mk_changes _mk_apptest _mk_podtest _mk_podcoveragetest
+        for ( qw/ _mk_dirs _mk_config _mk_psgi _mk_appclass _mk_rootclass
+              _mk_readme _mk_changes _mk_apptest _mk_podtest _mk_podcoveragetest
               _mk_images _mk_favicon/ ) {
-            
             $self->$_;
         }
     }
@@ -132,7 +131,7 @@ sub mk_app {
         $self->_mk_makefile;
     }
     if ($gen_scripts) {
-        for ( qw/ _mk_cgi _mk_fastcgi _mk_server 
+        for ( qw/ _mk_cgi _mk_fastcgi _mk_server
                   _mk_test _mk_create _mk_information
         / ) {
               $self->$_;
@@ -141,7 +140,7 @@ sub mk_app {
     return $self->{dir};
 }
 
-## not much of this can really be changed, mk_compclass must be left for 
+## not much of this can really be changed, mk_compclass must be left for
 ## backcompat
 sub mk_component {
     my $self = shift;
@@ -400,6 +399,14 @@ sub _mk_makefile {
     }
 }
 
+sub _mk_psgi {
+    my $self      = shift;
+    my $dir       = $self->{dir};
+    my $appprefix = $self->{appprefix};
+    $self->render_sharedir_file( 'myapp.psgi.tt',
+        file( $dir, "$appprefix.psgi" ) );
+}
+
 sub _mk_config {
     my $self      = shift;
     my $dir       = $self->{dir};
diff --git a/share/myapp.psgi.tt b/share/myapp.psgi.tt
new file mode 100644 (file)
index 0000000..5ab3a30
--- /dev/null
@@ -0,0 +1,21 @@
+use strict;
+use warnings;
+
+use [% name %];
+use Plack::Middleware::Conditional;
+use Plack::Middleware::ReverseProxy;
+
+my $app = [% name %]->raw_psgi_app;
+
+$app = Plack::Middleware::Conditional->wrap(
+    $app,
+    builder   => sub { Plack::Middleware::ReverseProxy->wrap($_[0]) },
+    condition => sub {
+        my ($env) = @_;
+        return if [% name %]->config->{ignore_frontend_proxy};
+        return $env->{REMOTE_ADDR} eq '127.0.0.1'
+            || [% name %]->config->{using_frontend_proxy};
+    },
+);
+
+$app
index 6c7a66b..56e9c93 100644 (file)
@@ -47,6 +47,7 @@ lib->import(File::Spec->catdir($dir, 'TestApp', 'lib'));
 my @files = qw|
     Makefile.PL
     testapp.conf
+    testapp.psgi
     lib/TestApp.pm
     lib/TestApp/Controller/Root.pm
     README