Save your sanity!!! RoR for Windows 2008 isn't there yet. Seems like things have barely caught up with Windows 2003. Keep a look out for IronRuby for IIS from Microsoft. It's just not cooked yet though.
Until then, find a TEMPORARY solution. Use mongrel and install the prerelease version of mongrel_service to get it working with W2K8:
http://groups.google.com/group/comp.lang.ruby/browse_thread/thread/1adf2a73c75c2884/38267c06198e282e?show_docid=38267c06198e282e
I did this to get Redmine working and seems like the most solid solution for now. I was able to recover some of my sanity back. I have tried all the articles you found and more. Even tried cooking IronRuby myself and got it to work with RoR basics, but failed with Redmine. Mongrel worked and is extremely fast, not sure if it is scalable though.
FastCGI is a replacement for "standard" CGI scripts.
In old-school CGI, the web server would start up your script, send it a request, wait for a response, then expect your script to terminate.
FastCGI's main feature is that your script doesn't die, but hangs around, waiting for another request. This makes it far more efficient because another process is not created, the probably-interpreted script is not reloaded, etc. This is a major win for Perl, Ruby, and just about every other language.
The downside is that your script must be written to handle this sort of thing. It's not hard.
So, FastCGI is all about reducing the impact of servicing a request.
If you are using Ruby on Rails (not just ruby) then look into Phusion Passenger. It is one awesome server plug-in that makes running Ruby on Rails quite nice.
As for mod_python, you can certainly do that. However, there are trade-offs. For one, a CGI script can run as another user than the main web server. I don't know if mod_python does this. It may be very useful to be able to run as a different user for permission issues, keeping applications separated by running on different users, etc.
So, to answer your question a little differently, if you're willing to use mod_python and Phusion Passenger, then you don't need to use FastCGI. If you must run the scripts in a different process than the server, then you want to use FastCGI if you can, over plain-old-CGI.
Best Answer
Well, in the meantime, I figured this one out. Since there was no concise writeup on this subject, here is the beginning of one. When I have all the bugs ironed out I'll submit this to some tutorial sites.
Make sure that the base fastcgi apache module is installed. If you use ArchLinux as I do, mod_fcgid on the aur works. In other distributions, install either mod_fcgid or mod_fastcgi. (For those who wonder the difference, I don't think there is much, so I went for the one with more activity.)
In your httpd.conf file, activate the module by adding a line to beginning of your LoadModule definitions. Not sure if it matters which distributions, but on Arch it was
Loadmodule fcgid_module modules/mod_fcgid.so
Add a new section to your httpd.conf. I put this just under the cgid_module section, but I'm pretty sure location would be arbitrary.
Now from my understanding, any file having the .fcgi extension in a directory marked ExecCGI will now be handled by the fastcgi module that was installed. I installed this package to give Ruby the fastcgi bindings, an inside an ExecCGI directory, I wrote this test script
test.rb.fcgi
Now when you go to that page in your browser, since
count
is outside the fastcgi loop, it should increment with each page view. If that is so, fcgi is setup correctly.