Ractor-ready Rails, ordered cache fetches, and more! Rails' latest weekly update highlights progress toward Ractor support, with controller configuration, Action View settings, Active Record commit callbacks, and time zone configuration now shareable across Ractors, and a fix for TypeCaster connection leaks. The update also includes ordered cache fetches in fetch_multi, PostgreSQL error verbosity configuration, and an upgrade to Marcel 2 for Active Storage. Hi, it’s Vipul https://github.com/vipulnsward . Let’s explore this week’s changes in the Rails codebase. Agents on Rails: Claude Fable 5.1 and GLM 5.3 Flash https://rubyonrails.org/2026/9/2/agents-on-rails-claude-fable-5-1-and-glm-5-3-flash Claude Fable 5.1 matched Opus 5 at the top of the Agents on Rails leaderboard with 58 of 63 successful runs, while costing less and finishing faster. The formerly unnamed ox-alpha model is GLM 5.3 Flash, which completed 52 of 63 runs for $3.31. On Rails: Rate Limiting For Your Customers https://rubyonrails.org/2026/9/1/on-rails-kagen-hearn-and-eddie-galindo-ascend Robby Russell spoke with Eddie Galindo and Kagen Hearn from Ascend about scaling one Rails monolith as larger customers arrived, finding the limits of its data ingestion pipeline, and shipping software that moves money. Rails keeps moving toward Ractor support https://github.com/rails/rails/pull/58647 Rails made controller configuration, Action View settings https://github.com/rails/rails/pull/58620 , Active Record commit callbacks https://github.com/rails/rails/pull/58653 , and time zone configuration https://github.com/rails/rails/pull/58642 shareable across Ractors. Active Record’s schema context also no longer deadlocks when initializing attributes https://github.com/rails/rails/pull/58651 , while event reporters https://github.com/rails/rails/pull/58599 now use per-Ractor storage on non-main Ractors. Fix TypeCaster sometimes leaking a connection https://github.com/rails/rails/pull/58645 TypeCaster now uses with connection , so it checks the connection back into the pool immediately instead of relying on executor cleanup. This fixes a connection leak seen in ActionController::Live actions. Preserve fetch multi key order with a local cache https://github.com/rails/rails/pull/58639 ActiveSupport::Cache::Strategy::LocalCache fetch multi used to return local hits before misses, changing the order requested by the caller. It now returns keys in the original order, matching Store fetch multi . Configure PostgreSQL error verbosity https://github.com/rails/rails/pull/58638 The PostgreSQL adapter now accepts an error verbosity option in database.yml and applies it when each connection is configured. production: adapter: postgresql error verbosity: <%= PG::PQERRORS TERSE % Re-enable PostgreSQL triggers when disable referential integrity raises https://github.com/rails/rails/pull/58635 Rails now restores disabled triggers from an ensure block. Raising inside disable referential integrity no longer risks leaving triggers disabled after the block exits. Avoid a redundant join in scoped through associations https://github.com/rails/rails/pull/58625 Active Record now removes duplicate joins when merging a scoped has many :through association. The generated query keeps the joins it needs without adding the same table twice. Shuffle unordered Active Record query results in tests https://github.com/rails/rails/pull/58548 A new configuration can shuffle results from most SELECT queries without an ORDER BY , making accidental order dependencies easier to catch in the test suite. config.active record.shuffle unordered selects = true Upgrade Active Storage to Marcel 2 https://github.com/rails/rails/pull/58549 Active Storage now depends on Marcel 2 for broader MIME type detection and additional hardening. Some newly analyzed files may receive canonical content types where Marcel 1 returned aliases; existing blobs keep their stored content types. Check any code that compares content type strings before upgrading. Fix JSON 3.0 compatibility https://github.com/rails/rails/pull/58601 Active Support now passes options to JSON.parse as keyword arguments, which is required by JSON 3.0. Rails also fixed custom encode options in ActiveRecord::Coders::JSON https://github.com/rails/rails/pull/58612 and encrypted fixtures backed by JSON columns https://github.com/rails/rails/pull/58606 . Apps testing JSON 3.0 should no longer hit the argument errors these paths raised. Add timeouts to generated GitHub Actions jobs https://github.com/rails/rails/pull/58595 New Rails applications now set a 15-minute timeout on each generated GitHub Actions job. Applications with longer test suites can raise or remove the limit. Two new guides are up for review https://github.com/rails/rails/pull/58617 The much anticipated Hotwire guide https://github.com/rails/rails/pull/58617 and a rewrite of the Securing Rails guide https://github.com/rails/rails/pull/58618 are open for review. Take a look and share your feedback You can view the whole list of changes here https://github.com/rails/rails/compare/@%7B2026-08-28%7D...main@%7B2026-09-04%7D . We had 25 contributors https://contributors.rubyonrails.org/contributors/in-time-window/20260828-20260904 to the Rails codebase this past week Until next time Subscribe https://world.hey.com/this.week.in.rails to get these updates mailed to you.