How about an ISAPI filter that intercepts all requests to a given IIS site?
- On startup kick-start n WEBrick/Mongrel processes running on ports x to x + n.
- It examines the URL to see if it has a '.' in it.
- If yes
- Pass it to IIS to deal with (so that ASP.NET pages and static files are dealt with)
- If no
- Use a simple load-balancing algorithm (round-robin will do to start with although it would be better to work like FastCGI and have the option of starting new processes when demand is high)
- Proxy the request in its entirety to the selected WEBrick/Mongrel instance
- Return the response in its entirety to the client
- On shutdown, gracefully bring down the N WEBrick/Mongrel processes.
This should mean that there is no Rewriter to set up and no FastCGI.
Installation should consist of installing Ruby, Rails, (maybe Mongrel), your application and the ISAPI filter (all of which ought to be easy).
The ISAPI filter ought to be relatively easy to write - all it does it control the WEBrick/Mongrel processes and proxy requests to them.
It would be even easier using an ISAPI application - however, that would require the rewriter (as the URL would change from /mycontroller/myaction/myid to /RubyISAPI.DLL/mycontroller/myaction/myid for the ISAPI to be invoked. However, that's the easy bit of the install - it's FastCGI that causes the grief, so it may well be worth looking at.