Guestlist requires a modern browser and does not work on Internet Explorer 6.
Please upgrade to Internet Explorer 8, Google Chrome (recommended), or Mozilla FireFox.
development

Guestlist on Rails

justingiancola justingiancola Comments

You might have noticed that it has been a little quiet around here of late. We haven’t gone anywhere and we certainly haven’t stopped improving Guestlist. On the contrary, we’ve actually rewritten it.

A little while ago Guestlist quietly cut over to a shiny new Rails 3 application. We did this without downtime and without anyone even noticing.

Wait, Guestlist wasn’t already Rails?

Many people probably thought Guestlist was already a Rails application. This is *almost* true. We built the original Guestlist using Merb, a Ruby framework that emphasizes modularity and performance. Because the Ruby web framework community is so fantastic we were able to make use of many Rails components even though we were using a different framework.

Why?

While the two frameworks were originally competing for mindshare, over time Merb became an important influence on Rails. In fact, the projects ended up merging and a number of core Merb committers did a huge amount of the work involved in making Rails 3 a reality. We were incredibly pleased with how well Rails 3 turned out and decided that we should invest the effort in upgrading our app in order to take advantage of all it has to offer.

How we did it

We were able to make the upgrade seamless by leveraging many of the great libraries that the Ruby web community has produced. We had Guestlist running on Rack and Unicorn even before they were part of a stable Merb release. We had been very early adopters of Bundler from back when it was still a Thor script that came packaged with Merb. Over time we replaced many Merb components with Rails-compatible Rack middleware. In early February we started swapping out major parts of the infrastructure, getting our large automated test suite to pass, and repeating.

When it came time for the final release we made our Merb and Rails deployment environments identical. This included the database schema, Nginx and Unicorn configurations along with all of the daemons, watchdogs and other monitoring infrastructure. We already use Unicorn for seamless, no-downtime upgrades so rolling out the Rails rewrite release was no different than a bugfix deploy.

Some stats:

  • 242 commits, 903 files changed, 18771 insertions, 32006 deletions.
  • 26 gems added, 23 gems removed, 33 gems upgraded, 27 gems unchanged.

It has been a lot of work but we’re very pleased with the results. We are already starting to make use of many Rails 3 goodies and will be announcing some of the great features we are building on them shortly.

Posted June 6, 2011
Divider

Notes

  1. guestlistapp posted this
Divider
Ensure your next event is a resounding success!

Guestlist provides tools for online event registration and ticket sales specifically designed for small to medium sized events.

Sign up for Free Learn More
Who is posting?
Jaco Joubert

Jaco Joubert As creative lead, Jaco has a cunning eye for design and a militant aesthetic sense.

Justin Giancola

Justin Giancola Our lead developer, versed in obscure programming languages and Italian stereotypes.

Ben Vinegar

Ben Vinegar Don't let his last name fool you – Ben is a suave business man and keen product developer.

Recent discussion