# Mongrel Web Server 0.3.11 -- Edge Rails and Win32 Compliant

**URL:** <https://www.ruby-forum.com/t/mongrel-web-server-0-3-11-edge-rails-and-win32-compliant/82147>\
**Category:** Ruby\
**Created:** [March 15, 2006, 9:44am UTC](https://www.ruby-forum.com/t/mongrel-web-server-0-3-11-edge-rails-and-win32-compliant/82147 "2006-03-15T09:44:58Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Zed\_S](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/z/da6949/32.png) [@Zed\_S](https://www.ruby-forum.com/u/Zed_S)\
**Post date:** [March 15, 2006, 9:44am UTC](https://www.ruby-forum.com/t/mongrel-web-server-0-3-11-edge-rails-and-win32-compliant/82147/1 "2006-03-15T09:44:58Z")

</div>

Hello Folks,

This is the big release of Mongrel that’s been in the works for a while  
now  
(well, like a week). It is chock full of changes and features, but  
mostly  
it syncs up the Win32 side of things, and validates that Edge Rails  
works  
without problems. It also features a more extensive and useful example  
of  
the GemPlugins called mongrel\_config.

First the usual stuff for people without a clue.

WHAT IS MONGREL?

Mongrel is a small fast little web server project trying to bring the  
speed  
of FastCGI and the simplicity of WEBrick for deploying any Ruby web  
application. It already supports Ruby on Rails, Camping, and Nitro and  
could soon support IOWA. Since it is a regular old HTTP based server it  
can  
be clustered, manipulated, and deployed like any other web server you  
use.

Check out the nifty website at:

[http://mongrel.rubyforge.org/](http://mongrel.rubyforge.org/)

TOP 10 REASONS TO USE MONGREL

1. It’s damn fast without being a pain to install.
2. It works on tons of platforms with active testing on Win32, FreeBSD,  
Linux, OSX, and NetBSD.
3. It is probably the very best deployment solution for people doing  
Win32  
Rails development, especially since it actively supports windows  
services  
and has a reasonably nice management tool.
4. It’s fast enough that you could probably run your small to medium  
size  
Ruby web applications using just Mongrel and be perfectly happy.
5. It actively supports Rails style page caching which could give your  
application a major performance boost without any extra deployment  
effort.
6. It uses an insanely correct HTTP parser which I’ve found blocks quite  
a  
few exploits. This parser is also what makes Mongrel so Fast.
7. It has a great plugin system that lets you package your extensions as  
gems and your users just “gem install and go”.
8. It is LGPL so you thieves can make money (but I get Mongrel mods  
back!)
9. It supports and uses Camping. Camping is cool.

And the best reason to use Mongrel is…

1. Isn’t a cool name like Mongrel enough?

INSTALLING

You might need sudo, you _will_ need Ruby 1.8.4, and you’ll need a  
compiler  
(unless you’re on win32).

Simple enough. If you have mongrel already try “gem upgrade”. If that  
causes problems then you might have to clear out gem\_plugin, mongrel,  
mongrel\_config, and mongrel\_status. This is rare and typically only if  
people have been tracking my development.

For newbies just do this:

$ gem install mongrel  
$ gem install mongrel\_config  
$ gem install mongrel\_status (if you want this)

That’s it.

NEW STUFF TO TRY IN 0.3.11

The 0.3.11 release features edge Rails support, some great  
functionality,  
big stability improvements, some good docs for folks to start using, and  
finally the beginning of a config tool implemented as a GemPlugin. Most  
importantly it completely supports Win32 again and the mongrel\_config  
tool  
actually works _better_ in Win32.

= Documentation

If you haven’t seen it yet, check out  
[http://mongrel.rubyforge.org/docs/lighttpd.html](http://mongrel.rubyforge.org/docs/lighttpd.html) For a good set of docs  
for  
getting Mongrel up in a very fast production deployment running on one  
machine.

Check out [http://mongrel.rubyforge.org/docs/gem\_plugin.html](http://mongrel.rubyforge.org/docs/gem_plugin.html) for docs on  
writing your very own mongrel\_rails commands as gem plugins. The  
ability to  
write your own handlers, filters, and potentially whole applications as  
plugins coming soon. Adventurous people could try doing a rails plugin  
by  
adding “rails” as a dependency on their plugin gem.

Especially check out the gpgen tool for getting a mongrel plugin up with  
minimal effort.

== Edge Rails

This release was tested with Edge Rails and several applications, but  
I’d be  
interested in more people living on the edge.

== Config Tool

If you’re on Unix (OSX too) or Windows you now have a new thing to play  
with: mongrel\_config. Once you install the mongrel\_config gem you get a  
new  
command for mongrel\_rails. You can try it two ways depending on your  
platform:

UNIX:  
1) cd myrailsapp  
2) $ mongrel\_rails configtool  
3) Hit the web page it says and try starting and stopping your rails  
app.

WIN32:  
1) $ mongrel\_rails configtool  
2) Hit the web page and install new services, delete them, start  
them,  
stop them, check out the start/stop logs, and view all of the service’s  
parameters. Yeah, win32 wins on this one.

And yes, win32 configtool doesn’t need to be in any rails directory,  
which  
means smart people will make a simple link that runs this in order to  
manage  
their rails apps services.

== Camping

Mongrel now supports Camping a lot better and uses it extensively in the  
mongrel\_config plugin. Camping is \_why’s little micro-framework for  
doing  
web applications. It’s perfect for little tools like the mongrel\_config  
plugin.

If you’re interested in writing a little application and don’t want a  
full  
Rails app then try looking at the code to mongrel\_config to get an idea.  
It  
works great, the only thing is that there’s tons of PFM in Camping that  
seems to break Rails like crazy. Camping == oil. Rails == water.  
Don’t  
mix.

== The Dreaded TCP Hack

Sean Treadway gave me a bit of hack code which jacks the OS listen queue  
from the default (usually 5) to a whopping 1024. This makes Mongrel  
handle  
concurrency much better. Give it a try and let me know how it works for  
you.

THE FUTURE

I’ll be writing the filters feature and finally the configuration file  
that  
will let you configure any handlers and filters from a .yaml file. This  
is  
needed so that people can write plugins to give you special filters,  
handlers, or whole applications (similar to configtool).

After this I’ll be talking with Luis to see if we can consolidate the  
mongrel\_rails\_service and mongrel\_rails by using the plugin system to  
implement the commands. We’ll also look at making the mongrel\_config  
more  
advanced.

Finally I’m talking with the IOWA folks to roll their web app into the  
Mongrel kennel. Fun stuff!

Enjoy the release and feel free to shoot me your problems, praise, and  
any  
features requests.

Zed A. Shaw

> **[Zed A. shaw](https://zedshaw.com/)**
>
> Personal essays and writings by Zed A. Shaw.

---

<div class="post-metadata">

**Author:** ![Zed\_S](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/z/da6949/32.png) [@Zed\_S](https://www.ruby-forum.com/u/Zed_S)\
**Post date:** [March 16, 2006, 3:42am UTC](https://www.ruby-forum.com/t/mongrel-web-server-0-3-11-edge-rails-and-win32-compliant/82147/2 "2006-03-16T03:42:18Z")

</div>

Great job Zed,  
thank you very much for your hard work. I’m waiting for the next  
installment of [[http://mongrel.rubyforge.org/docs/lighttpd.html](http://mongrel.rubyforge.org/docs/lighttpd.html) ]  
with memcached instructions to complete my setup. btw to deal with  
lighttpd load balancer issues i’m using balance: [  
[Balance :: Balance by Inlab Networks](http://www.inlab.de/balance.html) ] - lighttpd sending all request to  
ONE IP (can be 127.0.0.1), where balance is listenning and doing all  
requests spreading (load balancing and fail over).
