The Rails Tech Debt Blog
Articles on Technical Debt, Code Quality, Ruby on Rails, Rails Upgrade Projects, and Code Audits by the OmbuLabs Team
- Posts
- 280 from 1 Jul 2016 to 27 Oct 2026
- Posting
- weekly (61 in the last year)
- Kind
- company blog
- Feed
- https://www.fastruby.io/blog/rss.xml
2026 59
- Making AI Agents Safe to Retry
- Bootstrap 4 to 5, One Controller at a Time
- Can You Remove DatabaseCleaner?
- Rails World ‘26: Rails in the Agentic Era
- DHH, AI, and the Future of Rails
- Rails World ‘26: Hot Cell for Active Storage
- Rails World ‘26: The As-If Rule, Ractors & AI
- Rails World ‘26: The RubyGems Compact Index
- Rails World ‘26: Herb and ReActionView
- Run the Rails Agent Benchmark Yourself
- Rails World ‘26: Lexxy for Action Text
- What Happens to Your Ruby Tools With AI?
- Herb on Rails
- Rails 8.2: The HTTP QUERY Method
- Irish Chess Union Upgrades to Rails 8.1
- Upgrading a Deprecated Postgres on Heroku
- The Rails Deprecations You Missed This Summer
- Turning Audit Findings into CI Checks
- How to Avoid APM Bill Surprises
- Repay Tech Debt with the Strangler Fig Pattern
- What Replacing React with Hotwire Really Costs
- SimpleCov is now version 1!
- How to Distribute Private Gems
- Why To Use A Multi-Stage Dockerfile
- Measuring Code Coverage For Non-Ruby Runners
- Why Your Yarn App Suddenly Looks for Bun
- Opening a Repo Is Now an Execution Event
- Running a Ruby MCP Server in Production
- Why Patching the Gem Didn't Fix CVE-2026-66066
- Migrating from sass-rails to Dart Sass
- Tracking LLM Latency & Cost with Rails Events
- Rake Beyond Rails: A Build Tool You Know
- automating a tech debt audit opens a new window
- Automate Tech Debt Audits with Claude Code
- we covered deprecated associations in Rails 8.1 opens a new window
- Rails 8.1: Deprecated Associations
- From AI Opportunity to AI Feature in Rails
- Open-Source APM Tools for Rails
- Migrating from Secrets to Credentials
- The Hidden Cost of Your Test Suite
- Sidekiq & Rails Compatibility Table
- Painfully Simple Test Case Mistakes to Fix
- JRuby & Rails Compatibility Table
- No Node
- How to Parallelize Your RSpec Test Suite
- How to Leverage PurgeCSS in Your Rails App
- How to Choose a Gem Wisely
- Sidekiq & Ruby Compatibility Table
- Migrating From Sprockets to esbuild in Rails
- Usability Meets Accessibility
- Migrating a Rails App from Heroku to Railway
- Our Rails Upgrade Methodology as Claude Skills
- Reliable Maintenance for Solo SaaS Founders
- Upgrade Rails from 8.0 to 8.1
- optimize test performance opens a new window
- Time to Migrate from Heroku
- Ruby 4.0: ZJIT, Ruby Box, and Ractors
- Getting Started with Vite on Rails
- How We Fix the Broken Build During Upgrades
2025 27
- Hacktoberfest 2025: Our Open Source Work
- The Hidden Dangers in Your Gemfile
- Middleware in Rails
- Don’t Just Upgrade Rails: 7 CVEs to Patch
- Read more of Draining The Churn Swamp opens a new window
- Rails.event.notify(...) opens a new window
- The Forgotten Flag: How --trust-policy Works
- Rails 8.1 Local CI as First-Class Support
- Why Fixed-Cost Maintenance Beats “As-Needed”
- Rails and Ruby Compatibility in 2025
- Rails Versions You Shouldn't Be Using
- Ruby 3.4.0 Released: What's New
- Ruby's New Data Class (Ruby 3.2+) Explained
- The Automated Roadmap to Upgrade Rails
- Is It Ruby or Rails? Our New Discord Bot
- How Jekyll Keeps Our Blog Fast & Dev-Friendly
- The Hidden Costs of Technical Debt in Rails
- DIY Rails Upgrades: Open Source Tools
- Check If a Gem Is Loaded in Your Bundler
- Extracting Rails Deprecation Warnings
- Setting Up Rails with Dev Containers
- Heroku & Ruby Compatibility Table
- A Tale of 3 Aliases
- Valid Eval: 2-5x Performance Gains in Rails
- WAVE Accessibility Report
- Rails Database Migrations Best Practices
- From Elasticsearch Types to OpenSearch Indices
2024 49
- Segmentation Fault in Ruby
- What Is Cyclomatic Complexity?
- Refactoring Rails: Strategies for Models
- Refactoring Rails: Improving Code Quality
- Upgrade Rails from 7.2 to 8.0
- How to Grok a Rails App for the First Time
- Handling ERB Syntax Changes for Form Helpers
- RailsBump.org Is Maintained by FastRuby.io
- How to Fix the Gem Native Extension Error
- bundler-audit opens a new window
- Understanding the New Rails Maintenance Policy
- How to Create a Custom Gemfile for Development
- Upgrade Rails from 7.1 to 7.2
- accessibility testing in Rails applications opens a new window
- Exploring Ruby's # frozen_string_literal
- The Next Rails Gem
- Unlocking Value with Bonsai
- Upgrading Your Gem for Rails Compatibility
- Rails Applications with Multiple Databases
- How Outdated Are These Popular Ruby Projects?
- What Is Technical Debt?
- Ruby & Rails Compatibility Table
- Ruby & Hanami Compatibility Table
- upgrade Rails in increments opens a new window
- Can You Upgrade Rails in Increments?
- Managing Long-Running Branches
- Troubleshooting GitHub Actions with MySQL
- Getting to the Root of Slow Page Loads
- Speeding Up Assets Precompilation
- How Do You Know When Your App is Not Compliant? opens a new window
- Ruby & Sinatra Compatibility Table
- The Evolution of ActiveModel::Error in Rails
- Dual-Boot Ruby
- Rails Developer's Guide to PostgreSQL Indexes
- Ruby & Roda Compatibility Table
- Cracking the Case on Flaky Tests
- Dual-Boot Ruby on Rails Using Docker
- largest contentful paint opens a new window
- Largest Contentful Paint
- ReadyTech's Rails Upgrade Cuts Costs 5-10%
- How To Delay A Rails Upgrade
- previous article opens a new window
- Common Culprits in Rails Performance Issues
- A Step-by-Step Guide to Upgrading Ruby
- RubyConf 2023 – A Ruby Renaissance
- Serving ActiveStorage Attachments via a CDN
- How to Use Brakeman for Rails Security
- Rails Application with NoSQL Database
- Deploying Rails on Fly.io
2023 45
- A Comprehensive Guide to Our Roadmap Service
- What's New in Ruby 3.3.0
- libyear-bundler opens a new window
- Dual Boot with Rails' main Branch
- Exploring Ruby's Global Constants
- Strategies to Deal with load_defaults
- How to Reduce the Cost of Upgrading Rails
- ActionController::Parameters: Rails 4 to 5
- Test Doubles: Testing at the Boundaries
- Staying Ahead of the Rails Curve
- How Much Does It Cost to Upgrade Rails?
- My Journey Upgrading to Ruby 3.0
- Upgrade Rails from 7.0 to 7.1
- Finishing an Upgrade
- Response#content_type: Rails 5.2 to 6.1
- Dealing With Schema Changes in Rails 7
- Why You Shouldn't Run `rails app:update`
- i18n Gem Gotchas in Ruby 3.0
- Exploring Ruby Warnings
- 7 Techniques to Improve Your Debugging Skills
- 10 Strategies for Upgrading Low-Coverage Apps
- How to Run Multiple Rails Versions on Heroku
- Navigating Asset Management Madness in Rails
- Safeguarding Against Deprecation Regressions
- Fix Sneaky ArgumentErrors When Upgrading Ruby
- The History of the Asset Pipeline
- Fortify Rails: Defending Against Bad Actors
- Rails Security Audit opens a new window
- Readonly Associations and Upgrading to Rails 4
- RailsConf 2023: Our Rails Upgrade Workshop
- Introduction to Rails Engines
- Bonsai: Fixed-Cost Monthly Maintenance
- Power HRG Increases Server Speed by 40%
- Fixing Rails 6.1 Relation `merge` Deprecation
- regular security assessments opens a new window
- The AAA Pattern: Writing Robust Tests
- The Dangerous Query Method Deprecation
- Testing AJAX Controller Requests in Rails
- 7 Common Mistakes in Rails Upgrades
- doxo’s Rails Upgrade Boosts Performance 20%
- Two Approaches to Upgrading an Application
- Automate the Gem Release Process
- Smile.io Upgrades Rails, Boosts Speed, Revenue
- An Introduction to Race Condition
- Optimizing Images - Part 3
2022 22
- Optimizing Images - Part 2
- Request Queue and Why You Should Care About It
- Optimizing Images - Part 1
- Heroku-22-Stack-Upgrade-Guide
- percentile response times opens a new window
- How to Extend Rails Associations
- How to Split Rails Routes?
- Dual Booting with Engines and Gems
- SoundCloud Upgrades Its Ruby and Rails System
- Using SSH Keys in Docker for Private Repos
- What Does load_defaults Do?
- Be a Scholar or Guide at RubyConf/RailsConf
- Create a Custom Rubocop Cop
- How to Manually Release a Gem in rubygems.com
- An Introduction to Software Quality
- Naming Things Is Hard
- Migrate From Webpacker to Jsbundling-Rails
- Generating the Gemfile.next.lock
- Mocking JavaScript Requests During Tests
- What I Learned from My First Rails Upgrade
- Upgrade Rails from 6.1 to 7.0
- On How We Use RuboCop and StandardRB
2021 13
- JavaScript Test Code Coverage in Rails
- Upgrading To Zeitwerk
- Migrate from Paperclip to Active Storage
- Friendlier UUID URLs in Ruby
- Introducing Dotenv Validator
- 6.0 to 6.1 opens a new window
- Behind The Scenes: Rails UJS
- Upgrade Ruby from 2.7 to 3.0
- Nested Forms in Rails
- Why Wasn't Ruby 3 Faster?
- Solving Dual Booting Compatibility Issues
- Rails Upgrade Series opens a new window
- How to Upgrade Rails Without a Test Suite
2020 24
- this recent article opens a new window
- How to Prepare Your Rails App for an Upgrade
- Webpack VS Sprockets
- How to Pitch a Rails Upgrade to Your Boss
- How Fast Are Ractors?
- The Complete Guide to Rails Shims
- Migrating JS from Sprockets to Webpacker
- Best EC2 Instance Type for Rails Apps
- How We Estimate the Size of a Rails App
- How's the Performance of Ruby 3.0.0-preview1?
- Code Coverage Metrics for Ruby on Rails
- Is Your Test Suite Ready for a Rails Upgrade?
- OmbuLabs Open Source Guidelines
- Upgrading a Large Rails App From 5.0 to 5.1
- Two Commonly Used Rails Upgrade Strategies
- Migrating From Capybara Webkit to Webdrivers
- Churn vs. Complexity vs. Code Coverage
- we have a guide for that too opens a new window
- Our Rails Upgrade Process Explained
- Guide for Unmaintained Open Source Projects
- Calculate Tech Debt Using Skunk on GitHub
- Gemifying Your Style Guide to DRY Your CSS
- technical reasons opens a new window
- Guide to Migrate to Strong Parameters
2019 20
- Escaping the Tar Pit: Skunk v0.3.2 at RubyConf
- Merging Multiple SimpleCov Coverage Results
- Upgrading a Large Rails App From 4.2 to 5.2
- Skunk opens a new window
- RubyCritic opens a new window
- Three Libraries to Assess Code Quality in Ruby
- How to Keep Your Rails App Up to Date
- Debugging Non-Deterministic RSpec Tests
- Service Objects: Beyond Fat Models
- Introducing Bundler-Leak for Memory Leaks
- upgrade your Rails application opens a new window
- Tips for Writing Fast Rails: Part 3
- Upgrade Rails 101: Roadmap to Smooth Upgrades
- whether we work on a Rails upgrade project or not opens a new window
- upgraded Rails from 5.2 to 6.0 opens a new window
- Workshop - Upgrade Rails 101
- Dual-Boot technique opens a new window
- Legacy Rails: Silently Judging You
- Three Useful Data Migration Patterns for Rails
- Notes from the Rails Performance Workshop
2018 10
- Tips for Writing Fast Rails: Part 2
- Upgrading a Rails App From 2.3 to 4.2
- Upgrade Rails from 5.1 to 5.2
- Improving Performance with derailed_benchmarks
- Upgrade Rails from 5.0 to 5.1
- Announcing Gemfile.lock Audit Tool
- Upgrade Rails from 4.2 to 5.0
- has been doing upgrades with us for a few years now opens a new window
- ActiveRecord::Dirty 5.2 API Changes
- Upgrade Rails from 4.1 to 4.2