Back to blog
An image of the author: Ron DeVera

Precious Gems

Posted in by Ron DeVera on 10 June 2010

One of my favorite aspects of Mint Digital's work is starting new projects on a regular basis. This lets the team learn from past mistakes, and incorporate the latest design and tech ideas that we've been itching to try out. When we find something that works well, we're able to update other projects with the best new ideas.

We certainly don't kick off each Rails app from scratch. The starting point is BloomBox, our toolbox for building fast, scalable websites. As the project progresses, we learn hard lessons about zero-downtime deployments, front- and back-end optimization, and our development and testing practices.

A few critical pieces of BloomBox tech have made our recent websites noticeably faster and more reliable. These features would also improve our older projects nicely, so we extracted them to gems. These gems solve some common problems, so to contribute back to the developer community, we've released them as open source.

Caplets

Caplets gives capistrano super powers. While capistrano has served us well for deployments, recently we've been spending more and more time customizing it to fit our needs. Deploys were taking longer, our deploy config files were growing, and we had lots of duplication across projects. Caplets bundles up everything we've learned about deploying apps quickly and efficiently into one neat, reusable package. It's both a git-based replacement for capistrano's standard subdirectory-and-symlink deployment strategy as well as a collection of other tasks for doing everything from hot-reloading your unicorn servers to making bundler play nice on deployments.

Read more about Caplets on GitHub.

AssetHat

With Rails' default asset caching, CSS and JS are concatenated (not even minified) at runtime when that bundle is first requested. Not good enough. AssetHat automatically minifies (strips whitespace/comments) and bundles (combines into a single file) CSS and JS during deployment, which reduces file sizes and HTTP requests. (We like reducing HTTP requests.) AssetHat also loads images and popular JS libraries/frameworks (like jQuery) from high-speed CDN hosts instead of the local server. These techniques drastically cut the time it takes to load a page—almost as fast as Google can cut French fries.

Read more about AssetHat on GitHub. (RDoc)

Pyrite

Pyrite is a lightweight DSL around the Selenium browser testing framework. We found Cucumber to be awesome, but no one was reading the features. We found Webrat to be fantastic, but way too complex for what we wanted. So, we made Pyrite—a few selenium-client methods wrapped up in a readable way.

Read more about Pyrite on GitHub. (RDoc) (wiki)

We've shared these gems on GitHub so that you can install them in your own Rails apps, poke at their innards, request features, report bugs, or fork and hack away at them. They're all released under the MIT license to give you plenty of freedom.

Let us know how you like them!

  1. Default avatar

    Andy Bell

    18 June, 2010

    Great work, guys! I'm delighted that Mint is able to give something back to the Rails community that has give us so much.

    Also, here's Adam Rogers talking about Pyrite: http://ruby5.envylabs.com/#story-3 (He's at 1:40).

Sorry, comments are now closed on this post.