Roadmap Preview 2: live IRB console, deployment error resistance, new website
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.