Senior Track Roadmap

Zero-downtime Rails upgrades

This course treats a Rails upgrade as a series of deploys, each with a single cause. It sorts breakage into four kinds: load-time, test-time, runtime and data. It explains why data breakage survives a rollback. It covers reading the upgrade guide as a list of greps, sending deprecation warnings to a bounded counter and flipping framework defaults one at a time. It also covers dual-booting two lockfiles on one branch and the expand-contract shape for the two-version window of a rolling deploy. It ends by counting steps and deploys.

What you'll learn

  • ✓The four kinds of upgrade breakage and why data breakage survives a rollback
  • ✓Turning upgrade guide removals into greps and behavior changes into tests
  • ✓Configuring deprecation behavior, including :notify with a counter and :raise in test
  • ✓Flipping framework defaults one at a time with load_defaults and the generated file
  • ✓Dual-booting with two lockfiles and a second CI job
  • ✓The expand-contract shape, read-first format changes and lock_timeout for migrations
Free preview · Lesson 1 3 min read

What a Rails upgrade actually breaks

An upgrade is four different risks wearing the same version number. They fail at different times, in different places, with different blast radii, and treating them as one thing is why upgrades feel unpredictable.

Read the full lesson free →

Curriculum

7 lessons
Type to start searching...