Boring Rails

Boring Rails: Skip the bullshit and ship fast

Learn about the boring tools and practices used by Basecamp, GitHub, and Shopify to keep you as happy and productive as the day you typed rails new

Get notified when new Boring Rails content is posted

What's the secret sauce?

  • Majestic Monoliths riding on vanilla Rails

  • Boring Backends with Postgres, Redis, and Sidekiq

  • JavaScript Sprinkles with Turbolinks and Stimulus

  • Avoid CSS Hell with Tailwind

  • The 80/20 Answers for Performance and Scaling


Building GitHub-style Hovercards with StimulusJS and HTML-over-the-wire

Turbolinks, Stimulus, and Server Rendered HTML is a compelling alternative to modern JavaScript single page apps. Let's build a hovercard to see how you can kick it old school with a more boring approach.

Writing better StimulusJS controllers

Stimulus sprinkles interactive behavior on top of your boring HTML pages. By keeping your controllers small, generic, and composable you can build a front-end without the typical JavaScript mess.

Feature Flags: The stupid simple way to de-stress production releases

Feature flags bridge the gap between the abstract concept of continuous delivery and tactical release of features. Start small with a glorified if-statement before adding more complicated tooling to get the most bang for your buck.

Spring Cleaning: Tidying up your codebase

A practical checklist for tidying up your gems, pruning old git branches, removing unused views and routes, and cleaning up your database. A little bit goes a long way when it comes to cleaning!

Building a Rails CI pipeline with GitHub Actions

GitHub Actions is an automation platform that you run directly from inside a repository. We can use it as a testing CI/CD pipeline and keep everything close to the code.

Wrangling slow reports, large file exports, and long-running tasks in Rails with Active Job

Sometimes we need to generate really large file exports or run reports that are just slow. It's not enough to optimize a few queries, we need to move the work to a background job and notify the user when it's all done.

Managing Rails schema and data migrations without losing your mind

Rails database migrations are extremely powerful, but can be a mess if we don't avoid the traps. This article outlines a boring way to handle schema and data migrations effectively.

Matt Swanson
About the author

Hi. I'm Matt Swanson.

I've been building web apps for ten years and I'm tired of complex messes. The latest and greatest tools definitely have their place, but so often we could ship much more with much less.

This book is the missing set of sane defaults that I've learned over my career and curated from across the Rails community.

You can find my blog at or talk with me on Twitter.