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:
TOP 10 REASONS TO USE MONGREL
10) It's damn fast without being a pain to install.
9) It works on tons of platforms with active testing on Win32, FreeBSD,
Linux, OSX, and NetBSD.
8) 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.
7) It's fast enough that you could probably run your small to medium size
Ruby web applications using just Mongrel and be perfectly happy.
6) It actively supports Rails style page caching which could give your
application a major performance boost without any extra deployment effort.
5) 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.
4) It has a great plugin system that lets you package your extensions as
gems and your users just "gem install and go".
3) It is LGPL so you thieves can make money (but I get Mongrel mods back!)
2) 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 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 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
http://www.zedshaw.com/