added fcgi.pl
Sebastian Riedel [Tue, 22 Mar 2005 21:46:23 +0000 (21:46 +0000)]
Changes
lib/Catalyst/Helper.pm

diff --git a/Changes b/Changes
index 58102b1..3c2ac1b 100644 (file)
--- a/Changes
+++ b/Changes
@@ -4,6 +4,7 @@ This file documents the revision history for Perl extension Catalyst.
         - documented the log() accessor method in Catalyst (Andrew Ford)
         - added optional arguments to Catalyst::Log methods (Andrew Ford)
         - removed cgi-server.pl
+        - added fcgi.pl
 
 4.32  Tue Mar 22 02:10:00 2005
         - made a damn typo *AAAAAAAAAAAAAAHHHH!!!*
index 75bcb88..b9b2f5d 100644 (file)
@@ -39,6 +39,7 @@ sub mk_app {
     $self->_mk_changes;
     $self->_mk_apptest;
     $self->_mk_cgi;
+    $self->_mk_fcgi;
     $self->_mk_server;
     $self->_mk_test;
     $self->_mk_create;
@@ -367,6 +368,67 @@ EOF
     chmod 0700, "$script/nph-cgi.pl";
 }
 
+sub _mk_fcgi {
+    my $self   = shift;
+    my $name   = $self->{name};
+    my $script = $self->{script};
+    $self->mk_file( "$script\/fcgi.pl", <<"EOF");
+$Config{startperl} -w
+
+BEGIN {
+    \$ENV{CATALYST_ENGINE} = 'CGI';
+    \$ENV{CATALYST_TEST}   = 1;
+}
+
+use strict;
+use FindBin;
+use lib "\$FindBin::Bin/../lib";
+use FCGI;
+use $name;
+
+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
+
+fcgi - Catalyst FCGI
+
+=head1 SYNOPSIS
+
+See L<Catalyst::Manual>
+
+=head1 DESCRIPTION
+
+Run a Catalyst application as fcgi.
+
+=head1 AUTHOR
+
+Sebastian Riedel, C<sri\@oook.de>
+
+=head1 COPYRIGHT
+
+Copyright 2004 Sebastian Riedel. All rights reserved.
+
+This library is free software. You can redistribute it and/or modify it under
+the same terms as perl itself.
+
+=cut
+EOF
+    chmod 0700, "$script/fcgi.pl";
+}
+
 sub _mk_server {
     my $self   = shift;
     my $name   = $self->{name};