About · Blog · Add Rental · Favorites
Home > Blog > Rails Rumble Winners - Gem Teardown - DwellableTrends

DwellableTrends

Rails Rumble Winners - Gem Teardown

2012-10-23 by Adam

We love Rails at Dwellable. We didn't participate in the Rails Rumble this year, but we had great fun flipping through the contestants. The winners were announced on Friday and we found ourselves increasingly obsessed with a single, burning question...

How did they build such amazing apps in just 48 hours?!?

We contacted the ten winners and asked if we could have a peek at their Gemfiles. Each team generously agreed - thanks guys! Read on for our analysis.

(discussion on HN)

The standard: jQuery, Coffeescript, Bootstrap, Sass, HAML/Slim

The basic Rails stack:

  • jQuery - used by all ten of the winners
  • Coffeescript - nine. Apparently nobody likes plain Javascript.
  • Bootstrap - six. The weapon of choice for rapid application development. One team used Wirify, I think.
  • Sass - nine. One team used Stylus instead.
  • HAML - five. Three teams used Slim, which is like HAML but without the punctuation. Note that the Sidekiq admin app requires Slim, so there's some ambiguity. I presume the others used good old ERB.

MySQL still wins, Redis rising

Five teams used MySQL, three used Mongo, and two used Postgres. Looks like Mongo usage continues to grow despite occasional consternation on Hacker News. Strangely, each team used a different Mongo ORM. Also, one mildly schizophrenic team used Ohm (a Redis ORM) in addition to Mongo.

Five teams used Redis. The rest are ignoring the march of progress.

RSpec dominates. If you test.

Six teams used RSpec. The teams that used RSpec also employed several other testing-related gems, but there wasn't much overlap.

The other teams had no testing gems whatsoever. Does that mean no testing, or did they simply use minitest? You be the judge.

Resque is dead, long live Resque

Resque used to be the gem of choice for background jobs, but appears to be waning. Only one team used resque. Four teams used Sidekiq, which is compatible with resque but uses multiple threads to scale. One team used Delayed Job.

Sadly, no one picked the underrated Beanstalk.

Deployment decisions

Seven teams used Capistrano and one used Mina. Vlad failed to make an appearance. You don't really have to put Capistrano in your Gemfile, though. Perhaps they all secretly used it.

Four teams used Foreman. Three used Quiet Assets, which works around rails bug #2639, possibly the most +1'd bug in Rails history.

Two teams used Dalli to talk to memcache. Kudos to them for caring about performance. No one else seemed to use memcache. I guess the other teams didn't use memcache or relied on Redis instead.

Services

A variety of third-party services were used by the teams, with very little overlap. Three teams used Pusher, a hosted WebSockets helper service. I haven't heard of it before and it looks neat. Two teams used the MailChimp API (not straight SMTP).

Exception handlers - a crowded market

Note to self: don't create a startup to handle 500 errors.

Two teams used New Relic in addition to an exception handler.

Devise dominates if you need more than OmniAuth

Devise continues to win hearts and minds, though some teams were able to get by with plain old OmniAuth:

Node cross-pollination

In general I believe that the embryonic Node.js platform envies the Ruby gems ecosystem. But if you look carefully you can see Node starting to encroach. For example, six of the teams used The Ruby Racer. What about the others? I'm guessing that their ExecJS used Node.

Also, one team used Stylus (a wrapper around the stylus npm package) instead of Sass. I have no idea why.

Zombie award

From the Hpricot page six months ago - "After years of lack of a proper maintainer ... it has been decided to finally close the book on hpricot." Three teams never got the memo:

Awesome gems you should look at

Finally, I'd like to give a shout out to some great gems that I found while poking through the Gemfiles. Some of these were entirely new to me. Perhaps you'll find them useful too:

  • Pry - the fantastic irb replacement. And source browser. And debugger. Six teams used it. Irb is good but Pry is better.
  • Redcarpet - the markdown processor, used by three teams. It's used on this blog too.
  • Guard - watches your file system and responds to changes, used by three teams. For example, you can make it reload your browser whenever an app/view file changes.
  • Letter Opener - shows email in your browser instead of actually sending it. Genius.
  • UserAgent - provides user_agent.mobile? and several other slightly less useful features.
  • Whenever - generate crontabs and cron jobs with pure Ruby. So nice.
  • Stamp - get rid of strftime format strings and use human-friendly strings instead. I intend to start using this immediately! No need to remember if %m is minutes or months.

Final thoughts

The Rails Rumble Gem Teardown was quite enlightening. It was gratifiying to see that most of the teams used a stack similar to ours here at Dwellable. I also discovered a bunch of new gems (Sidekiq, Letter Opener, etc.) to check out, and at least one 3rd party service that looks useful (Pusher).

I want to thank the winning teams for allowing me to poke through their Gemfiles. Check out the sites to see what you can do with these gems:

  • 1st · findthin.gs by Grumpy Cat
  • 2nd · Revision.io by Divshot
  • 3rd · Deploy Button by Team Lizi
  • 4th · SciCombinator by Bitwise Operators
  • 5th · Bugle by Skookum Digital Works
  • 6th · RescueJS by RescueJS
  • 7th · FaxItForMe by Melbourne Mavericks
  • 8th · Dasher by aTech Media
  • 9th · My Best Drink by Las Vegas Ruby Group
  • 10th · Goodmix by Err on the Side of Too Much Bacon
About DwellableTrends
Welcome to DwellableTrends, the Dwellable blog.
Recent Posts
  • Dwellable for Android 2.0
  • Weirdest Food Festivals in Michigan
  • Last Chance to Vote for Dwellable!
  • Write a Property Description That Sells
  • Dwellable for App of the Year
See All Posts