Open Source at Foraker: April 2016 Edition

It’s been almost two years since our first post detailing our open source contributions, so it’s time for an update.

Ruby Gems

Since most of our work is done in Ruby on Rails, we end up extracting a lot of shared functionality into gems. This enables us to share functionality across clients, meaning that our developers benefit from a common approach to problems, and that multiple clients can benefit from improvements to the shared gem. The beauty of open source is that the Ruby developer community can help to expand and improve the gems as well as they adopt the solutions and adapt them to fix additional problems.

Here are some of our recently released gems:

activechronology

Easily scope your ActiveRecord models by timestamps or dates. We were implementing time-based ordering and sorting in every project, often in subtly different ways, and this gem helps us to be consistent and makes switching from project to project have less of a cognitive overhead.

active_pivot

Our active_pivot gem makes it easy to import data from Pivotal Tracker. We use it for displaying story activity on our status board and for calculations in our internal metrics application.

MrMime

Administrators often want to be able to impersonate the users of their site. This enables admins to help users complete some action or to troubleshoot reported problems. MrMime provides a mostly plug-n-play solution for both Devise and Sorcery, and it’s easy to add your own adapter for other authentication solutions.

rspec_profiling

Collects profiles of RSpec test suites, enabling you to identify specs with interesting attributes. For example, find the slowest specs, or the spec which issues the most queries. We use this gem to help keep our test suites running quickly.

simple_spreadsheets

Easily render Excel-friendly spreadsheets. Clients often want to export data for Excel, and this makes adding that ability relatively trivial.

system_health

Provide a convenient way to regularly look for bad data or other system health indicators. It provides a single endpoint that will generate an error count and enumerate error messages. This count and the messages can be collected by external monitoring tools. We use system_health to help catch dangerous system states early.

Other Gems

You can browse our complete collection of gems on RubyGems.

Other Foraker Projects

In addition to Ruby gems, we’re happy to open up other projects and resources that Foraker uses internally.

Lab Manual

The Lab Manual is a guide to development at Foraker Labs. It’s where we document our strongly held opinions, our preferred tools, and how we go about particular tasks. It’s also where we collect all of the resources that we believe to be essential to doing good work as a developer.

Status Board

Our status board displays interesting information that’s pulled from Pivotal Tracker (recently delivered stories), GitHub (pull requests that need code review), CodeClimate (scores for our various projects), and more. It also provides handy indicators on if the bathrooms are occupied or not.

Questioneering

Questioneering is our content marketing platform with an Ember frontend and a Rails API backend. It’s currently being developed to offer a quiz-based recommendation on whether building a native mobile app or a responsive web app is better for an individual’s unique needs.

Parting Thoughts

We’re thrilled to be able to give back to the community, which has given so much, and honestly hope that others can glean some value from these projects.

Our work is based on open source projects, from Ruby itself to Rails, and they would not be nearly as powerful, bug-free, or performant without the contributions from developers around the world.

Tweet at Jon

Share this post!