Phusion white papers Phusion overview

Roadmap Preview 2: live IRB console, deployment error resistance, new website

By Hongli Lai on July 26th, 2012

Phusion Passenger is an Apache and Nginx module for deploying Ruby and Python web applications. It has a strong focus on ease of use, stability and performance; it is built on top of tried-and-true, battle-hardened Unix technologies, yet at the same time introduces innovations not found in most traditional Unix servers. Since mid-2012, it aims to be the ultimate polyglot application server.

In the last Preview, we mentioned putting “final touches on the launch”, and some of you may wonder what these final touches are. Code-wise Phusion Passenger Enterprise is as good as done, so these final touches cover mostly the website. We believe that a good website, good documentation and good support resources are essential for any good product. Thus, in this Preview, we shall unveil another two Phusion Passenger Enterprise features. We shall also unveil a small preview of the new website.

Live IRB and debugging console

Don’t know what your application is doing? Phusion Passenger Enterprise provides two useful introspection and debugging features.

You can attach an IRB console to any live, running Ruby application process managed by Phusion Passenger Enterprise. In this console you can inspect the application’s state using Ruby code, and modify it in a REPL manner. Just invoke this command:

passenger-irb <PID OF THE APP>

Phusion Passenger Enterprise also allows you to attach a ruby-debug console to any Phusion Passenger-managed Ruby process that has the debugging flag turned on. Ruby-debug normally requires a terminal and assumes that there’s only 1 process, assumptions which are obviously not compatible with Phusion Passenger’s multiprocess model. We’ve patched ruby-debug (and the Ruby 1.9 equivalent, the debugger gem) so that they properly support debugging over TCP sockets. Phusion Passenger Enterprise’s ruby-debug integration thus relies on these patches. ruby-debug already ships the patch; debugger will ship the patch in the next release.

Use it as follows:

passenger-irb --debugger <PID OF THE APP>

The following screencast demonstrates its usage.

Deployment error resistance

In the event that an updated application fails to start (because of a configuration error, syntax error in the source code, or whatever), the open source version of Phusion Passenger will shut down all application processes and display an error. Phusion Passenger Enterprise offers deployment error resistance: when it encounters an error it will report the error to the logging system and “freeze” the process list. It will neither start any new processes, nor shut down any existing processes, until the administrator has signaled that the problem has been solved. This ensures that the web application stays up and running as long as possible.

New website

The greatest care has been put into the new website when it comes to aesthetics and usability. We want to make sure that we’re doing it right. Below you see the design for just the front page. We have many more designs besides this one.

What you see here is actually the third design iteration. Because as with most good things, the first try is often not successful. In a future Preview we’ll show you the other two designs. For 3 weeks we’ve worked day and night on our designs, in-house. When it came to implementing it, the entire Phusion team was deployed on this endeavor. The process has been super intensive but also extremely rewarding, especially when the team has such a good synergy.

Technical specs

It’s made in Adobe Photoshop and Adobe Illustrator. The frontpage Photoshop file consists of 231 layers and is grid aligned using 960.gs’s 24-column grid system. We intend on making the website fully responsive, but many of you are anxiously waiting for the product so we’ve decided to defer responsiveness to a later iteration of the website. We’ve also tried to create and keep as many elements as possible in a vector format so that they can be easily scaled later on. This is especially important as retina displays become more and more widespread.

The website is implemented in Rails 3.2, running on Ruby 1.9.3 and served by Phusion Passenger Enterprise 4.0 pre-beta. We’re not afraid to eat our dogfood so we run production websites on unreleased Phusion Passenger code. On the frontend front, we’re using HTML 5, CSS 3 and CSS 3 transitions. No Internet Explorer 6 support, I believe most readers are well aware of the reasons why. We also use webfonts whenever we can, but unfortunately not all font licenses allow this, so occasionally we have to render fonts to images. Needless to say, this latter is quite a pain and we hope more and more font foundries will consider webfont licensing in the future.

Stay tuned!

Roadmap Preview 3 will follow soon. We will unveil more Phusion Passenger Enterprise features.

You can easily stay up to date with our release progress! Just fill in your email address below and we’ll notify you.



  • darix

    will you make sure the console stuff also works with pry? pry replaced IRB for me since quite some time now.

  • http://www.phusion.nl/ Ninh Bui

    @darix: We don’t support it at this time. Having said that, we’d be interested in looking into this in the future to see if it makes sense.

  • Matthijs Langenberg

    Best voice-over ever!!!111eleven, where did you hire this guy?

    Now stop teasing and take my money!

  • Richard

    Great stuff, as usual!

    It could be helpful if passenger-irb displayed the file/line # of the ‘debugger’ statement in encountered: “Connected at ‘config.ru:5′.” This would reassure me I attached it where intended, and could prevent mistakes under a pressured/hasty production debug session.

  • http://www.phusion.nl/ Hongli Lai

    @Richard: That would be the domain of ruby-debug/debugger because we use their console directly. You should submit a feature request to them.