
This is the Iron Mongrel release. It is the result of trying to trash Mongrel until it can’t move and then fixing anything that comes up. The testing methods used are:
The end result is a lot of little fixes which make Mongrel more robust against badly behaving clients and possibly against many potential security risks in the future. In general Mongrel 0.3.12.2 behaves more consistently compared to past releases when given random data or maliciously formatted data.
The main changes are related to how IO is processed and how the HTTP parser rejects “bad” input. What the parser now blocks is:
As soon as these conditions are detected the client is disconnected immediately and a log message is printed out listing the IP address, the exact cause, and the data that caused it. I’ll remove the data dump later, but I want people to shoot me valid requests that cause parser errors.
That’s not all though. I’ve started a security page where I’ll publish the results of security threats, tests, and improvements as well as any advice for folks.
This release also features a few little features here and there:
Go ahead and install the usual way: gem install mongrel or gem upgrade
The logo is courtesy court3nay from caboose
-- Delivered by Feed43 service
The development version of Ruby on Rails has cool new internationalization features. Although the framework itself doesn’t provide a lot of I18N functionality, it does provide the necessary hooks for plugins to implement I18N however they see fit. Simon Tokumine has written an I18N demo application to show you what Rails is capable of, when used in combination with the localized_dates plugin.
We’ve deployed the demo application at http://i18n-demo.phusion.nl/. Check it out.
2.0.3 is a minor release containing non-intrusive bug fixes and optimizations.
Changes Vendor Rails optimization Some people vendorize Ruby on Rails. In previous versions, Phusion Passenger creates a new framework spawner which caches the code for the vendorized Rails framework. This step has now been removed because it’s redundant. As a result, Phusion Passenger now uses less memory when serving applications that have vendorized Rails. It is therefore especially adviced that shared hosts upgrade to this version. ‘passenger-memory-stats’ now works on non-Linux systems The ‘passenger-memory-stats’ didn’t work correctly on non-Linux platforms. This has been fixed. However, ‘passenger-memory-stats’ is only capable of displaying the real memory usage of processes when running on Linux. Other operating systems don’t provide a way to query the real memory usage, unfortunately. So on non-Linux platforms, ‘passenger-memory-stats’ will display the Resident Set Size instead. WSGI fixes WSGI support in Phusion Passenger is mostly a proof of concept. Nevertheless, we find it worthwhile to fix any WSGI-related bugs that we may encounter. 2.0.3 fixes Python 2.4 compatibility (previous versions require at least Python 2.5), and fixes some WSGI compliance bugs. Thanks to Weyert de Boer for contributing the latter fix. How do I upgrade to 2.0.3? Via a gemPlease install it with the following command:
gem install passengerNext, run:
passenger-install-apache2-modulePlease don’t forget to copy & paste the Apache config snippet that the installer gives you.
Via a native Linux packageNeil Wilson from Brightbox has kindly provided an Ubuntu 8.04 package for Phusion Passenger. The package is available from the Brightbox repository which you can find at:
http://apt.brightbox.netAdd the following line to the Third Party Software Sources:
deb http://apt.brightbox.net hardy main(The simplest way to do that is to create a file in /etc/apt/sources.list.d/ containing the deb instruction, and then run ‘apt-get update‘).
Once you’ve done this then you can install Phusion Passenger by running:
apt-get install libapache2-mod-passenger(Note that Neil is currently packaging 2.0.3, so it might take a while before this release shows up in the apt repository.)
Phusion Passenger’s development continues on. A few bugs have been found and fixed. These fixes are deemed to be important enough to backport to the 2.0.x series, so today we present you with Phusion Passenger 2.0.2.
Please install it with the following command:
gem install passengerNext, run:
passenger-install-apache2-modulePlease don’t forget to copy & paste the Apache config snippet that the installer gives you.
Via a native Linux packageNeil Wilson from Brightbox has kindly provided an Ubuntu 8.04 package for Phusion Passenger. The package is available from the Brightbox repository which you can find at:
http://apt.brightbox.netAdd the following line to the Third Party Software Sources:
deb http://apt.brightbox.net hardy main(The simplest way to do that is to create a file in /etc/apt/sources.list.d/ containing the deb anstruction, and then run ‘apt-get update‘).
Once you’ve done this then you can install Phusion Passenger by running:
apt-get install libapache2-mod-passenger(Note that Neil is currently packaging 2.0.2, so it might take a while before this release shows up in the apt repository.)
This is a small release that fixes a little bug, some of the documentation, and adds the new RedirectHandler code and a redirect call for the mongrel.conf files. It’s fresh so don’t rely on it. Everyone should upgrade with the usual gem update command (which tells you it’s “Upgrading…”) and tell me how it works.
This release fixes:
The -C configure file option was busted because of an errant line move. Adds RedirectHandler thanks to Jonas Pfenniger and a new redirect call to Configurator. Fixes mongrel_service documentation which was referring to -r instead of -c and -C instead of -u. Using RedirectHandlerRedirects are pretty simple. You simply have either a new RedirectHandler class you can use or you can put this in a mongrel.conf and pass that to -S:
redirect "/from", "/to"It also accepts regex for the from parameter and can take a block. Play with it if you’re interested.
Deflate And SafariIt looks like Safari does not honor the Content-Encoding: deflate response, so avoid using DeflateFilter until I can find out why. This is why you don’t hand code network protocol parsers.
-- Delivered by Feed43 service
This is the release that came out of RailsConf hacking with folks like Rick Olsen, Why The Luck Stiff and other incredibly cool folks. The conference was great, so lets hope this release is good too. The big thing it adds is upload progress in Mongrel. That’s right, Why and Rick pinned me down and made me put it in Mongrel. They worked up the mongrel_upload_progress plugin and are now working on Rails and Camping code to make it happen.
Install from the gem servers with your usual commands:
gem update or gem update mongrel or gem install mongrelBut if you can’t wait for the gem mirrors to update, then you can also do:
gem install mongrel --source=http://mongrel.rubyforge.org/releasesTo get around it all.
-- Delivered by Feed43 service
A few days ago, the Ruby core team has announced several newly discovered security vulnerabilities. Ruby versions prior to 1.8.6-p285 and 1.8.7-p70 are vulnerable. The previous version of Ruby Enterprise Edition is also vulnerable because it’s based on 1.8.6-p114.
Earlier Ruby releases had some crash bugs and incompatibility problems. It goes without saying that such problems are unacceptable in production environments, so we’ve been careful and took the time to test 1.8.6-p286 against various test suites:
So our conclusion is that Ruby 1.8.6-p286 is indeed stable and compatible. Kudos to the Ruby core developers for this excellent release!
We’ve prepared a new Ruby Enterprise Edition release, based on Ruby 1.8.6-p286. The official Ruby on Rails wiki has been running on this Ruby Enterprise Edition version since yesterday (in addition to Phusion Passenger git HEAD), and everything seems to be rock-solid so far.
This Ruby Enterprise Edition release not only includes upstream Ruby’s security vulnerability fixes and other bug fixes, but also some Ruby Enterprise Edition-specific improvements and fixes:
MySQL headers are autodetected Many people have problems installing the MySQL gem, especially on non-Linux platforms. That’s because the gem cannot find the MySQL development headers. The Ruby Enterprise Edition installer now autodetects the MySQL headers, for much better MySQL gem installation success rate. Bug fix: don’t overwrite shebang lines for non-Ruby scripts Normally, the installer changes the shebang lines of all scripts in $PREFIX/bin to the correct location of the Ruby Enterprise Edition binary. ($PREFIX is the location that one installs Ruby Enterprise Edition to) However, this would change all shebang lines, even for non-Ruby scripts. This has been fixed: only the shebang lines of Ruby scripts will now be changed. sqlite3-ruby gem permissions fixed The sqlite3-ruby gem installed itself with the wrong permissions. Its files would be world-writable by default. The installer now fixes this problem. ‘PassengerRuby’ instead of ‘RailsRuby’ The installer used to instruct the user to change the ‘RailsRuby’ option for Phusion Passenger. ‘RailsRuby’ has been deprecated since Phusion Passenger 2.0 in favor of ‘PassengerRuby’, so the installer now instructs the user to change ‘PassengerRuby’ instead. Upgrade instructions Via the source tarballPlease download the source tarball from the download page and run the built in installer, as instructed on the download page. To upgrade, please install Ruby Enterprise Edition to the same location that you specified last time.
Via the Debian packagePlease install the Debian package by downloading it from the download page. (click on the “Linux” tab)
After talking with various people deep inside the Ruby machine, I’ve decided to release Mongrel Ruby licensed as of 0.3.13.3. This release should make quite a few people happy. It also means that contributors will hopefully feel better about their contributions and people using Mongrel have more freedom.
This release also fixes a problem with the -B option not actually logging object counts. The object count logging isn’t perfect, but some folks use it.
This release also will print the access log to the screen when you run it in your console. This was requested by a few folks, but I’m not convinced I like it. Try it out and if you do or don’t then mention it in the mailing list.
As usual, do your:
gem install mongrelTo get the release, and if it doesn’t show up then you have to wait for the ruby gems mirror to sync up.
-- Delivered by Feed43 service
Alright folks, after nearly a month of pounding and beating up the Mongrel 1.0 RC1 release we’re putting out the official 1.0.1 release. It’s official, so let the chaos spread across the 2.0 web in a destructive blaze viewable from the buckle of Orion’s Belt.
Or, you could just install it with:
$ gem install mongrelIt should properly pull all the required dependencies, and updating your gems should get all the new cool stuff.
What happened to 1.0?We decided to follow official Rails Configuration Management Board Standards and do a silent 1.0 followed by an official 1.0.1. There weren’t any bugs in 1.0 but we didn’t want to break with tradition by not offering a 1.0.1. (Yes, this is a joke.)
Also, this forces the upgrade even for people who grabbed 1.0 from the releases directory.
Information RDoc Coverage Report Report Bugs Documentation Adoptions Books Are You Using It?I want to build up a good list of people who are using Mongrel, no matter what you use it for or where. Any use is a good use. I’ll be filling in documentation and collecting up all the pictures of people’s dogs that I’ve collected, so adding more “mongrel success stories” would be a great addition.
If you wrote a book or mentioned Mongrel in a book then tell me that too. I want to make sure more than just my book is mentioned. I’ll be adding to that list as well.
You can post to the mailing list or email one of the project members. If you ask us to keep the company secret then we won’t post your usage, just keep it for our own records and smug self-satisfaction.
-- Delivered by Feed43 service
Mongrel 1.0.3 is finally out with an asspile of bug fixes. It’s now a signed gem, so add the Mongrel public certificate via:
$ wget http://rubyforge.org/frs/download.php/25325/mongrel-public_cert.pem $ gem cert --add mongrel-public_cert.pemNow install via:
$ gem install mongrel --include-dependencies -P HighSecurityManual downloads (gems and tarballs) are at http://mongrel.rubyforge.org/releases/.
Mongrel 1.1 is coming real soon now with JRuby support and a few other things.
-- Delivered by Feed43 service
Mongrel 1.0.4 is out. It fixes three bugs that were introduced in 1.0.3.
-- Delivered by Feed43 service
Mongrel 1.1 is out, with JRuby support. Mongrel_cluster is also updated to 1.0.4, with fixes for a Capistrano recipe bug. The URIClassifier has been updated; if you still need the old one (you don’t), it’s available in the mongrel_experimental gem.
-- Delivered by Feed43 service
Hi guys.
RailsConf 2008 was great, and our talk on Phusion Passenger and Ruby Enterprise Edition went really well. Fabio Akita has some pictures of our talk. For other pictures, see Fabio’s .mac gallery!

We promised to release Passenger 2.0 and Ruby Enterprise Edition on the same day. Unfortunately we’ve been too optimistic about Internet access. We’re currently at the airport and we have limited internet access until we are back in the Netherlands (which should be in about 4 days or so), but in the meantime, the Passenger version with Rack and WSGI support has already been pushed to github, so feel free to tinker around with it. We’ve also put the latest Users Guide (with Rack support) online.
Thanks for the support Chad!
We’re trying our best to find a way to push out Ruby Enterprise Edition as well, and ask the hardcopy guys to not release it prior to the moment that we’re able to push it (which should be in about 4 days). This launch will also be accompanied by a site etc… Feel free to blog about it though, and the reason why we’re asking this is because we want to keep the support at Phusion related places. This will prevent any ‘noise’ in communication.
Thanks for the support mateys!
Cheers,
Hongli Lai
Tinco Andringa
Ninh Bui
It’s a little bit late (this should have been done during RailsConf, sorry), but it’s finally here. We’re pleased to announce Phusion Passenger 2.0, release candidate 1.
If no major issues are found, this will become version 2.0.1. We’re also pleased to announce the long-awaited Ruby Enterprise Edition.
Our RailsConf 2008 presentation about Phusion Passenger and Ruby Enterprise Edition went extremely well. The sheets are available in the following formats:
The presentation includes a screencast (23 MB) created by Soocial.
Some people have been distributing our old, outdated sheets, which contain lots and lots of bullet points and almost no graphics. Please download the sheets on this page instead: these are the sheets that we used during the presentation.
Introducing Rack support2 months after the release of Phusion Passenger 1.0, we present you with Rack support. It is now possible to host arbitrary Ruby web applications (e.g. Merb and Camping) on Phusion Passenger! We provide this feature with the same ease of use that many people have come to love.
The following screencast, created by Ryan Bates of RailsCasts fame, demonstrates the ease of deploying a Rack application on Phusion Passenger:

But that’s not all. We’ve done our homework. Our Users guide provides a comprehensive list of Rackup specifications for all Ruby web frameworks that we could find, so that you don’t have to hunt this information down yourself!

We received some Rack-related contributions shortly after Rack support had been pushed to the public git repository. We’d like to thank _why and remi for contributing documentation and full Rackup DSL support.
Introduction Python WSGI supportNot only do we support Rack, we now also support Python WSGI! In theory, Phusion Passenger can now run Django.
Don’t get us wrong. Phusion Passenger’s main focus is still on Ruby and Ruby on Rails. WSGI support is meant to be a show case of Phusion Passenger’s flexible architecture.
Optimizations Much better stability This new release is much more stable than the 1.0.x series. Many stability issues have been fixed. In fact, Dreamhost and iLike are using this version in production environments. So if you were experiencing stability problems, please upgrade to this version, as it may solve your problem. Much faster graceful restart Some hosts gracefully restart Apache often, so to them, high graceful restart speed is essential. Phusion Passenger 2.0 RC 1 is much, much faster at graceful restarts. Less memory usage: reduced VM sizeProcess monitoring tools tend to use the “VM size” of a process as an indication of the actual memory usage. This is not correct, because the VM size only indicates the amount of memory that a process can access, not the amount of memory that it actually uses.
Nevertheless, having a large VM size poses problems. Some servers, virtual private servers in particular, have artificial VM size limits in order to prevent processes from using too much memory. Phusion Passenger 1.0 makes Apache’s VM size very large (more than 100 MB), even though the actual memory usage is only several MB.
In Phusion Passenger 2.0, the VM size has been reduced by ten fold, as shown by the following diagram:

One of the traditional problems of Mongrel Cluster behind Nginx is, in Ezra’s words:
“My only complaint was that the proxy modue was round robin only. This means that if you had 3 mongrels and one of them performed and action that took say 20 seconds, for that 20 seconds every 3rd request would get stuck in line behind the mongrel doing the long blocking request. This is because nginx was merrily doing round robin and didn’t care if a mongrel was busy or not.”
Phusion Passenger now supports fair load balancing. It will forward a request to the Rails instance with the least number of requests in its queue. Fair load balancing is turned on by default, without the need to configure anything.
See also page 53 of the presentation sheets.
Upload bufferingIn Phusion Passenger 1.0, a (long) file upload will block a Rails application instance. Usually this is not a big problem, because Phusion Passenger will spawn more Rails instances if existing ones are blocked. But it becomes a problem if your website handles many simultaneous file uploads (read: more than 10 concurrent file uploads at any time).
Phusion Passenger 2.0 supports upload buffering. File uploads that are sufficiently large, are stored into a temporary file. Only when the file upload is done, will it be forwarded to the Rails application. This means that your Rails applications will not be blocked while a large file upload is in progress.

See slide 86 of the presentation sheets.
The default timeout values in Phusion Passenger 1.0 were optimized for shared hosts, which host many applications and need to free resources quickly. But most of our users seem to be using virtual private servers. These servers usually don’t get a lot of traffic, so the default timeouts are easily reached. So we’ve changed the default timeout values in favor of virtual private servers. Shared hosts and people running Phusion Passenger on dedicated servers should adjust the timeouts.
| RailsMaxPoolSize | 20 | 6 |
| RailsPoolIdleTime | 120 | 300 |
| ApplicationSpawner server idle time | 120 | 600 |
By default, Phusion Passenger preloads the Ruby on Rails framework and application code. This allows Phusion Passenger to reduce the startup time of Ruby on Rails applications and to save memory. Using this technique, startup time can be decreased by as much as 90%!
Unfortunately, some applications and/or plugins don’t expect to be preloaded, and even assumes that no code is being preloaded. soap4r is one such plugin. Until recently, these applications/plugins didn’t work with Phusion Passenger.
Phusion Passenger 2.0 implements so-called conservative spawning. In conservative spawning mode, Phusion Passenger will not preload any code. In other words, it will emulate the way Mongrel loads Rails applications. Conservative spawning allows Phusion Passenger to be 100% compatible with all Rails applications.
Conservative spawning is less efficient than the default spawning strategy, though no less efficient than Mongrel Cluster. You should only use conservative spawning if you’re experiencing compatibility problems.
‘RailsEnv’ is now per-virtual host The RailsEnv configuration option used to be a global option. It’s now a per-virtual host option, so you can define a different environment for every Rails application. New resource control option: ‘PassengerMaxInstancesPerApp’The PassengerMaxInstancesPerApp option allows you to define the maximum number of pool slots that a single application may use. This will prevent a single application from getting out of control and taking over the entire server.
Many thanks to Jochen Tuchbreiter for contributing this feature.
Support for worker MPM The Apache worker MPM is now supported. Analysis and system maintenance tools Phusion Passenger 2.0 includes new analysis and system maintenance tools. If you’re experiencing stability problems with Phusion Passenger or your Rails application, then please try these tools. How do I upgrade to 2.0 RC 1? Via a gemPlease download the 2.0 RC 1 gem, then install it with the command:
gem install passenger-1.9.0.gemNext, run:
passenger-install-apache2-modulePlease don’t forget to copy & paste the Apache config snippet that the installer gives you.
Via a native Linux packageNeil Wilson from Brightbox has kindly provided an Ubuntu 8.04 package for Phusion Passenger. The package is available from the Brightbox repository which you can find at:
http://apt.brightbox.netAdd the following line to the Third Party Software Sources:
deb http://apt.brightbox.net hardy main(The simplest way to do that is to create a file in /etc/apt/sources.list.d/ containing the deb anstruction, and then run ‘apt-get update‘).
Once you’ve done this then you can install Phusion Passenger by running:
apt-get install libapache2-mod-passengerFinally, run the following command. This will tell you how to configure Apache.
passenger-install-apache2-module Ruby Enterprise EditionRuby Enterprise Edition has been officially launched. Check out http://www.rubyenterpriseedition.com/
So far, Ruby Enterprise Edition has mostly been tested on Linux (both 32-bit and 64-bit). MacOS X is not yet supported: support for it is planned for a future version.
That’s all folksA lot of work has been put into this release. Enjoy.
If you like our work, please consider getting an “enterprise license”. ![]()
A new version of Ruby Enterprise Edition has been released, with the following changes:
MacOS X support A number of people have been waiting for this.Go to the download page and follow the installation instructions. (*note*: RubyForge is still updating their mirrors, so the download might not be immediately available. In that case, please wait a few hours before trying again.)
Phusion Passenger version 2.0.1 has been officially released. Not much has changed since 2.0 RC 2: only some documentation has been updated.
See the announcements for versions 2.0 RC 1 and 2.0 RC 2 for a full list of changes compared to version 1.0.x.
How do I upgrade to 2.0.1?Please install it with the following command:
gem install passengerNext, run:
passenger-install-apache2-modulePlease don’t forget to copy & paste the Apache config snippet that the installer gives you.
We are days away from the official 0.3.13 release, which will be followed quickly by 0.4 code named Enterprisey Edition 1.2. This latest pre-release update closes off the last of the annoying bugs, and adds one very nasty feature people should check out before we release. Read about Katanas below.
This release doesn't have win32 yet. That'll be uploaded Monday.
GETTING ITBest thing to do is this:
$ gem install daemons $ gem install mongrel --source=http://mongrel.rubyforge.org/releases/ WHAT’S FIXED Fixes a failure of -P to find PID files. Changes the RailsHandler so that only passes GET or HEAD requests to the DirHandler for page caching. Confirms that the new send_file and upload to tempfile works on win32. More tests with big files uploaded on win32 are needed. Lots of documentation on installing, with more to come. Full Apache documentation and information on writing your own snazzy handlers and filters. François SIMOND suggested a check for allow_concurrency and to avoid locking Rails if that’s set to true. I tried it, had to change the patch but I left it in. Read below. Moved some of the “change to user/group” code around so that any Mongrel command can use it. Various code clean-ups and big improvements on the unit test coverage and reporting. Check out the coverage report Lots of thrashing and code review, not much more will come for 0.3.13 unless an obviously broken piece needs work. KATANA SUICIDE CONCURRENCYI resisted doing this, but it’s going to come down sooner or later now that François SIMOND figured it out. Mongrel was protecting the world from the allow_concurrency “feature” but now it lets you kill yourself in obscenely horrible ways.
If you set ActionController::Base.allow_concurrency=true in your config/environments/* then Mongrel will NOT guard the Rails Dispatcher. This means that you’ll get full threaded madness thrashing your Rails controllers until they die horribly slicing themselves into tiny little bits leaving you breathless with the destruction.
Mongrel will obnoxiously warn you about this, and people who try it will NOT get support from me without mad amounts of dough. If you turn this on, and your world comes crashing around your head, then I warned you. Otherwise, go ahead and give it a try and see if that improves things for you.
Enjoy the release, and report those bugs
-- Delivered by Feed43 service
After a huge push, tons of delays to fix bugs and add enhancements, and lots of feedback and contributions from many great people, I’m happy to announce the official release of Mongrel 0.3.13.
This release features lots of documentation, cleaned status output, improved IO processing, a major bug fix for a thread leak, and an improvement in the win32 support.
Read below from past news for all the stuff that was fixed. The main change that win32 folks should be aware of is they have to install a second little gem to get the services support. This is slightly annoying, but the change makes it possible to work independently on the services support and not hold back future Mongrel releases.
Getting The ReleaseFor normal people you should do this:
$ sudo gem install mongrelOf use update. If update don’t work then remove mongrel and re-install.
Win32: Getting The ReleaseFor win32 people, you just do this:
$ gem install mongrel $ gem install mongrel_serviceWhen you do the install, pick the mswin32 version. After you install the mongrel_service you now just use mongrel_rails like everyone else, but you get some new fancy service:: commands.
Reporting BugsSend them to the mailing list and make sure you have your OS, versions, web server, etc.
-- Delivered by Feed43 service
Just in case you haven’t noticed yet, http://wiki.rubyonrails.org/ is now running Phusion Passenger and Ruby Enterprise Edition. We migrated them a few days ago, and other than a MySQL failure yesterday, it had been rock solid ever since. People have complained about wiki.rubyonrails.org being down often, but the uptime should be a lot better now. ![]()