π
article
rubyflow.com
·
October 15, 2026
Upgrading a Rails app from Ruby 3.4.4 to 4.0.3: what actually breaks
Ruby 4.0 is the first major bump in over a decade, but a Rails 8.x app usually upgrades in a day of focused work. Most of the pain is not in the language: it is gems that left the default set ( cgi , ostruct , logger , benchmark ), the Ractor::Port rewrite, Kernel#open("| cmd") no longer spawning a process, and a handful of changes that break tests rather than code ( Set#inspect output, Net::HTTP no longer defaulting Content-Type on bodies, new backtrace frames that confuse Sentry/Datadog gro...
Read on rubyflow.com →