FCGI: How do you use it?

I’m kind of perplexed here so I’ll ask the stupid questions.

When I use perl and call for a CGI module, I get with it all kinds of
really
cool abilities related to %ENV and STDIN/STDOUT and the ability to even
set
cookies…

I can’t find much of anything about what FCGI/FastCGI offers in terms of
methods
or properties that are similar…

Is it correct to assume that FCGI doesn’t do any of this and if I’m
interested
in any kind of CGI related functionality (headers, cookies, %ENV…)
then I
should probably just load the CGI modules?

Now onto the Ruby specific nature of the question, but if anyone here
knows the
perl-specific question above I would also appreciate it:

Is there some way I can run the ruby fcgi scripts from command line to
test?
Editing and restarting apache all the time is not very fun.

Under ruby should I load fcgi, cgi, cgi/cookie, cgi/session rather
than expecting any of this kind of insight into the HTTP process from
the FCGI
working environment? (please don’t take any of these negative questions
to be a
slight on FCGI/FastCGI

It’s a stupid question but I would feel stupider if I found I was
loading
multiple modules when only one was required. I haven’t really found
anything
that tells me that fcgi does other than some rudimentary examples. (or
is it
that simple and I’m just trying to make it complicated?)

Simply put, I can’t seem to find any way to discover what fcgi provides
under
ruby (variables, methods). But I would like to use it and understand
that many do.

The documentation around the whole FastCGI thing is either very slim or
hard to
find. I did not find the whitepaper a very encouraging read since I’m
not
designing an HTTP server. I’m trying to be a user of the product.

On Tue, 25 Jul 2006, Tom A. wrote:

interested in any kind of CGI related functionality (headers, cookies,
%ENV…) then I should probably just load the CGI modules?

fcgi loads the cgi module for you. when you write

FCGI.each_cgi do |cgi|
^^^
^^^
^^^
end

then cgi is a cgi object with all the methods any cgi object has
(mostly).
these are documented in standard ruby docs, which can be found most
anywhere,
including http://rubydoc.org.

Now onto the Ruby specific nature of the question, but if anyone here knows
the perl-specific question above I would also appreciate it:

Is there some way I can run the ruby fcgi scripts from command line to test?
Editing and restarting apache all the time is not very fun.

i answered this in your other post, but here it goes again:

here is an example fcgi program:

fortytwo :/var/www/html > cat env2.fcgi
#! /usr/local/bin/ruby
require ‘rubygems’ rescue nil
require ‘fcgi’
require ‘yaml’

FCGI.each_cgi{|cgi| cgi.out{ “

#{ cgi.env_table.to_hash.to_yaml
}
” }}

and here’s running it

fortytwo :/var/www/html > ./env2.fcgi </dev/null | head
Content-Type: text/html
Content-Length: 4037

---
   XAUTHORITY: /home/ahoward/.Xauthority
   GS_LIB: /home/ahoward/.fonts
   SSH_ASKPASS: /usr/libexec/openssh/gnome-ssh-askpass
   KONSOLE_DCOP_SESSION: DCOPRef(konsole-4421,session-4)
   MAIL: /var/spool/mail/ahoward
   KDEDIR: /usr


> Under ruby should I load fcgi, cgi, cgi/cookie, cgi/session rather than
> expecting any of this kind of insight into the HTTP process from the FCGI
> working environment?  (please don't take any of these negative questions to
> be a slight on FCGI/FastCGI

you don't need to load cgi.  you must load cgi/cookie and cgi/session if 
you
intende you use them.  they are also documented in the standard docs.

> It's a stupid question but I would feel stupider if I found I was loading
> multiple modules when only one was required.  I haven't really found
> anything that tells me that fcgi does other than some rudimentary examples.
> (or is it that simple and I'm just trying to make it complicated?)

i think that may be the case ;-)  the source is also quite simple if you 
take a
look at it.  fcgi ships with a pure ruby version which is light reading.

> Simply put, I can't seem to find any way to discover what fcgi provides
> under ruby (variables, methods).  But I would like to use it and understand
> that many do.
>
> The documentation around the whole FastCGI thing is either very slim or hard
> to find.  I did not find the whitepaper a very encouraging read since I'm
> not designing an HTTP server.  I'm trying to be a user of the product.

the key is that fcgi hands you a cgi-like object and that object __is__ 
documented.

good luck.

-a

the key is that fcgi hands you a cgi-like object and that object is documented.

this is “key”. I now have some direction in which to go play. Thank
you.

Should I assume that

fcgi.each do |request|

returns something akin to perls http::request object (useble but
clunkier) and

fcgi.each_cgi do |cgi|

returns a CGI object with is easier to code with.

Since it loads CGI anyways, there really isn’t any memory savings on
either of these approaches, but little things can be handled with
‘requests’ probably faster than if they are treated as cgi objects.

Thank you.

On Wed, 26 Jul 2006, Tom A. wrote:

returns something akin to perls http::request object (useble but
clunkier) and

fcgi.each_cgi do |cgi|

returns a CGI object with is easier to code with.

exactly.

Since it loads CGI anyways, there really isn’t any memory savings on
either of these approaches, but little things can be handled with
‘requests’ probably faster than if they are treated as cgi objects.

maybe - though i doubt a real application would be bottlenecked here.

regards.

-a