Skip to main content

Joyful Rails

Published: Jul 28th, 2020
Updated: Dec 29th, 2020


I love Ruby on Rails. I think it’s a fantastic framework for web applications. I highly recommend it and I thoroughly enjoy working with it.

I’ve been lucky enough to work extensively with Rails on many different projects over many different years. Most Rails development, like most software development, happens on long-lived projects. A well-established and well-configured project is an absolute joy to work in and collaborate on.

But a new Rails project doesn’t have many of the little tweaks and additions that make things so nice for me. I end up spending a lot of time and frustration repeating the same steps in every application.

This guide is an effort to make those steps faster and easier. The goal is to create a smooth and rapid path from zero to a codebase I love working in.

What This Is Not

This is not a beginner’s guide

I will explain things as simply as I can, but there will likely be some important information left out. If you do not understand a recommendation, you might not understand the consequences.

This is not something to apply blindly

Examine every bit of the advice herein to see if it is right for you, your project, and your team before applying it. That’s what the annotations are for.

This is not static

The world changes and I change with it. My preferences and recommendations are in constant flux. This guide will change with them.

This is not an automated setup script

There is no point in automating something that will change every time you do it.

If you want an automated setup script, take a look at Suspenders. It is a Rails template created by Thoughtbot with their standard defaults. They make a lot of good choices, some of which I will certainly draw from.

Table of Contents

0 Joyful Rails

A guide to make working with your Rails application more productive and joyful.

1 Ruby Version Management

Use the right version of Ruby for the job.

2 The Rails New Command

Creating a brand new Rails application.

3 Git Initialization

Use version control to make changes with confidence.

4 No Git Masters

Remove problematic language from your Git setup.

5 Pairs File

Accurately record changes made while pairing by adding multiple authors to your commits.

6 Add a License

If your code is open source, make sure people know.

7 Adopt a Code of Conduct

Ensure a safe and welcoming environment by adopting a code of conduct.

8 Switch to PostgreSQL

Switch over to a production-ready database.

9 Remove Gem Version Specifiers

Make it easy to continuously keep your libraries up to date.

10 Switch to HAML

Make your HTML templates easier to work with.

11 Switch to Sass

Make your cascading style sheets easier to work with.

12 Switch to RSpec

Use a clear and expressive testing framework.

13 Add RSpec::Its

Make it easier to test object attributes.

14 Configure Generators

Make the Rails generators generate the code you want. No more, no less.

15 Switch to UUIDs

Database keys that can’t be guessed, don’t overflow, and don’t leak information.

16 Use a Ruby Linter

Make your Ruby style consistent.

17 My Ruby Style

Make your Ruby style beautiful.

18 Use a Rails Linter

Avoid common Rails mistakes and correct them automatically.

19 Library Vulnerability Checks

Find security issues in your libraries before the bad guys do.

20 Code Vulnerability Checks

Find security issues in your code before the bad guys do.

21 Use a License Monitor

Avoid using libraries with licenses you do not want to agree to.

22 Default Rake Task

Run all of your automated checks with a single command.

23 Set Up a Production Environment

Deploy your Rails application.

24 Update the Readme

What do future developers need to know? What do you need to tell them?

25 Add Authentication

Identify your users.

26 Add an Authorization Library

Identify what users can do.

27 Add a CSS Framework

Make it easy to make your interface beautiful.