2.1. What Is Mongrel?
Mongrel is a small, fast, mostly Ruby Web server. It was created to do only a few things, but to do them really well: Make the development, deployment, and extension of Ruby applications Dead Simple. That's it.
2.1.1. A Little History
Zed Shaw started Mongrel in late December 2005. He wrote it because he was frustrated by the existing solutions for developing and deploying Ruby Web applications. FastCGI was abysmally broken and WEBrick was abysmally slow. He had written SCGI Rails Runner earlier in the year as a replacement for FastCGI, but he quickly hit a ceiling, as it was still just a middleman. Also, he was bored. So he wrote Mongrel to exorcise some demons, and to scratch an itch. It turns out that he was not the only one feeling frustrated, so his solution turned out to be pretty useful for a lot of Ruby developers and sysadmins. Mongrel's success is largely a result of Zed's approach to building software. In the Ruby development world, philosophy and practices are at least as important as the code itself, so Zed has forged Mongrel in his own way. It is a Web server; it is not a universal adapter. It is tight and small and secure, and he will be happy to explain why.
Mongrel is already packaged for distribution for the following flavors of Linux and will be included in Apple's next release of OSX (called Leopard, see http://www.apple.com/server/macosx/leopard/more.html for details).
When I started on Mongrel, the deployment landscape was nasty. It seemed that only 37signals knew how to deploy large-scale applications in Rails, and I think that's only because they sacrificed chickens to Ninhursag between bouts of Touretts-inspired screaming. I was working on SCGI Rails Runner, and that wasn't much of an improvement. What we needed was just a Web server that ran Rails as fast as FastCGI, but as simply as WEBrick. At every turn I tried to make sure Mongrel was easy to set up, but still flexible so it would fit into as many locations as possible.