Written by thoughtbot

Shoulda Matchers 2.6.0

For the past four months, we’ve been hard at work on the next version of

shoulda-matchers , and we’re pleased to announce it’s up on

RubyGems .

2.6.0 is first and foremost a compatibility release, bringing a few of the

matchers up to date with the newest…

Extract Mostly-Constant Data from the Database

Using database-backed models in our applications can cause coupling and

performance problems. Extracting that data to Ruby constants helps to resolve

those problems.


Consider the following database tables and their data:


Liskov Substitution Principle

Ben and Joe tackle the third principle in SOLID: the Liskov Substitution Principle. Learn some basic rules you can apply to subclasses and other “is a” relationships to improve flexibility in your applications and reduce subtle bugs from interface…

Introducing Hound

We’re pleased to announce Hound , a hosted service that comments on Ruby

style guide violations in your GitHub pull requests.

Hound is currently free and available for public and private GitHub projects.

We intend to charge in the near future to ensure…

Build Phase Podcast: 34: Darth Brooks

Container view controllers and clever DJ names are on the docket for this week’s episode. Mark and Gordon discuss patterns for handling modal authentication views and other high level approaches to root view controller presentation.

Removing Sass Duplication Using Sass Maps

Recently Dan asked me to get new icons for Raleigh , New York City , and Austin added to some of our landing pages.

Once I created the icons, I checked out the site to put them in below the offices that have already been on the marketing pages. It…

Open-Closed Principle

In this episode, Ben and Joe discuss the Open Closed Principle. Also mentioned was polymorphism, the composite design pattern, decorators, factory method, and chain of responsibility.

Finally, you might be interested in the immutable data structu…

What's new in edge Rails: Active Record enums

In an Active Record model, usually you will have a column that can only have a set of pre-defined values (such as a status column). Normally, you would define a constant for those values as well as several helper methods like the following example…