added fcgi.pl
[catagits/Catalyst-Runtime.git] / lib / Catalyst / Helper.pm
index 9f6b765..b9b2f5d 100644 (file)
@@ -39,8 +39,8 @@ sub mk_app {
     $self->_mk_changes;
     $self->_mk_apptest;
     $self->_mk_cgi;
+    $self->_mk_fcgi;
     $self->_mk_server;
-    $self->_mk_cgiserver;
     $self->_mk_test;
     $self->_mk_create;
     return 1;
@@ -325,7 +325,10 @@ sub _mk_cgi {
     $self->mk_file( "$script\/nph-cgi.pl", <<"EOF");
 $Config{startperl} -w
 
-BEGIN { \$ENV{CATALYST_ENGINE} = 'CGI' }
+BEGIN {
+    \$ENV{CATALYST_ENGINE} = 'CGI';
+    \$ENV{CATALYST_TEST}   = 1;
+}
 
 use strict;
 use FindBin;
@@ -365,55 +368,50 @@ EOF
     chmod 0700, "$script/nph-cgi.pl";
 }
 
-sub _mk_server {
+sub _mk_fcgi {
     my $self   = shift;
     my $name   = $self->{name};
     my $script = $self->{script};
-    $self->mk_file( "$script\/server.pl", <<"EOF");
+    $self->mk_file( "$script\/fcgi.pl", <<"EOF");
 $Config{startperl} -w
 
-BEGIN { 
-    \$ENV{CATALYST_ENGINE} = 'Server';
+BEGIN {
+    \$ENV{CATALYST_ENGINE} = 'CGI';
+    \$ENV{CATALYST_TEST}   = 1;
 }
 
 use strict;
-use Getopt::Long;
-use Pod::Usage;
 use FindBin;
 use lib "\$FindBin::Bin/../lib";
+use FCGI;
 use $name;
 
-my \$help = 0;
-my \$port = 3000;
-
-GetOptions( 'help|?' => \\\$help, 'port=s' => \\\$port );
-
-pod2usage(1) if \$help;
-
-$name->run(\$port);
+my \$request = FCGI::Request();
+while ( \$request->Accept() >= 0 ) {
+    my \$output;
+    {
+        local(*STDOUT);
+        open( STDOUT, '>', \\\$output );
+        $name->run;
+    }
+    \$output =~ s!^HTTP/\\d+.\\d+ \\d\\d\\d.*?\\n!!s;
+    print \$output;
+}
 
 1;
 __END__
 
 =head1 NAME
 
-server - Catalyst Testserver
+fcgi - Catalyst FCGI
 
 =head1 SYNOPSIS
 
-server.pl [options]
-
- Options:
-   -? -help    display this help and exits
-   -p -port    port (defaults to 3000)
-
- See also:
-   perldoc Catalyst::Manual
-   perldoc Catalyst::Manual::Intro
+See L<Catalyst::Manual>
 
 =head1 DESCRIPTION
 
-Run a Catalyst Testserver for this application.
+Run a Catalyst application as fcgi.
 
 =head1 AUTHOR
 
@@ -428,18 +426,19 @@ the same terms as perl itself.
 
 =cut
 EOF
-    chmod 0700, "$script/server.pl";
+    chmod 0700, "$script/fcgi.pl";
 }
 
-sub _mk_cgiserver {
+sub _mk_server {
     my $self   = shift;
     my $name   = $self->{name};
     my $script = $self->{script};
-    $self->mk_file( "$script\/cgi-server.pl", <<"EOF");
+    $self->mk_file( "$script\/server.pl", <<"EOF");
 $Config{startperl} -w
 
 BEGIN { 
     \$ENV{CATALYST_ENGINE} = 'Server';
+    \$ENV{CATALYST_TEST}   = 1;
 }
 
 use strict;
@@ -447,7 +446,6 @@ use Getopt::Long;
 use Pod::Usage;
 use FindBin;
 use lib "\$FindBin::Bin/../lib";
-use File::Spec;
 use $name;
 
 my \$help = 0;
@@ -457,18 +455,18 @@ GetOptions( 'help|?' => \\\$help, 'port=s' => \\\$port );
 
 pod2usage(1) if \$help;
 
-$name->run( \$port, File::Spec->catfile( \$FindBin::Bin, 'nph-cgi.pl' ) );
+$name->run(\$port);
 
 1;
 __END__
 
 =head1 NAME
 
-cgi-server - Catalyst CGI Testserver
+server - Catalyst Testserver
 
 =head1 SYNOPSIS
 
-cgi-server.pl [options]
+server.pl [options]
 
  Options:
    -? -help    display this help and exits
@@ -480,10 +478,7 @@ cgi-server.pl [options]
 
 =head1 DESCRIPTION
 
-Run a Catalyst CGI Testserver for this application.
-
-Similar to the regular server but doesn't require a restart
-after code changes!
+Run a Catalyst Testserver for this application.
 
 =head1 AUTHOR
 
@@ -498,7 +493,7 @@ the same terms as perl itself.
 
 =cut
 EOF
-    chmod 0700, "$script/cgi-server.pl";
+    chmod 0700, "$script/server.pl";
 }
 
 sub _mk_test {