This is a fork of ruby-fcgi library, but compatible with ruby1.9.1
Ruby C
Failed to load latest commit information.
ext/fcgi ruby1.8.x compability patch Oct 28, 2009
lib Fixed encoding error in Ruby 1.9.1 Nov 4, 2009
test Initial commit to fcgi. Oct 21, 2009
.document Initial commit to fcgi. Oct 21, 2009
.gitignore .gitignore updated Oct 21, 2009
ChangeLog README and Changelog updated Oct 28, 2009
InstalledFiles initial commit Oct 20, 2009
LICENSE Initial commit to fcgi. Oct 21, 2009
README README and Changelog updated Oct 28, 2009
README.rdoc README and Changelog updated Oct 28, 2009
README.signals initial commit Oct 20, 2009
Rakefile gem description updated Oct 28, 2009
install.rb initial commit Oct 20, 2009


fcgi - FastCGI library for Ruby

Version 0.8.9


C version

* ((<libfcgi|URL:>))(FastCGI Developer's Kit)

Pure Ruby Version

* StringIO


$ ruby install.rb config
  (Pure Ruby Version: ruby install.rb config --without-ext)
  (Some systems need: ruby install.rb config -- --with-fcgi-include=/usr/local/include --with-fcgi-lib=/usr/local/lib)
$ ruby install.rb setup
# ruby install.rb install


Class Method

— FCGI.accept

Returns FCGI instance

— FCGI.each

— FCGI.each_request

— FCGI.is_cgi?

— FCGI.each_cgi

Automatically detects whether this program is running under the FastCGI
environment, and generates a 'CGI' type object for each request. Also
installs signal handlers for graceful handling of SIGPIPE (which may
occur if a client gives up on a request before it is complete) and
SIGUSR1 (generated by Apache for a 'graceful' exit)

If you are using the HTML output methods you can also pass the HTML type
e.g. FCGI.each_cgi('html3') do ... end

However, you should beware that the CGI library is quite slow when
used in this way, as it dynamically adds a large number of methods
to itself each time a new instance is created.

Instance Method

— FCGI#finish


— FCGI#in

Returns Stream or StringIO

— FCGI#out

Returns Stream or StringIO

— FCGI#err

Returns Stream or StringIO

— FCGI#env

Returns Environment(Hash)


Using the FastCGI native interface:

require "fcgi"

FCGI.each {|request|
  out = request.out
  out.print "Content-Type: text/plain\r\n"
  out.print "\r\n"

Using the CGI-compatible interface, which works both as a standalone CGI and under FastCGI with no modifications:

require "fcgi"

FCGI.each_cgi {|cgi|
  name = cgi['name'][0]
  puts cgi.header
  puts "You are #{name} " if name
  puts "Connecting from #{cgi.remote_addr}"

Note: you can't reference CGI environment variables using ENV when under FastCGI. It is recommended that you use the CGI-generated methods, e.g. cgi.remote_addr as above.

If you need to access environment variables directly, perhaps extra ones set in your Apache config, then use cgi.env_table instead. This isn't quite as portable because env_table is a private method in the standard CGI library.



fcgi.c     0.1   Copyright (C) 1998-1999  Network Applied Communication Laboratory, Inc.
           0.8   Copyright (C) 2002 MoonWolf <>

fastcgi.rb 0.7   Copyright (C) 2001 Eli Green
fcgi.rb    0.8   Copyright (C) 2002 MoonWolf <>
fcgi.rb    0.8.5 Copyright (C) 2004 Minero Aoki