It’s been almost two years since our first post detailing our open source contributions, so it’s time for an update.
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:
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.
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.
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.
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.
Easily render Excel-friendly spreadsheets. Clients often want to export data for Excel, and this makes adding that ability relatively trivial.
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.
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.
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.
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 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.
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.