RepoJournal

$ cat rails/month/2026-09-01.log

Rails

Rails

the month in review · September 2026

Herb becomes Rails 8.2 default

By RepoJournal · composed from the cited sources · human-reviewed weekly · methodology

♥

The Ractor-readiness push runs across Rails internals all month, and ActionText's to_markdown escaping keeps getting patched.

417 commits 187 PRs merged 8 releases 30 briefings covered

all rails reviews →

Make some ActionView::Base settings shareable rails/rails

by etiennebarrie

ActionView::Base settings move off class variables to singleton-class accessors so view rendering can run on non-main Ractors, part of the month-long Ractor-readiness push. If you subclass or reopen ActionView::Base to set configuration, check that you are writing through the delegating readers.

Ractorize Active Record schema context rails/rails

by gmcgibbon

SchemaContext attributes are split into a class embedded in Ractor storage, so schema state can change per reactor rather than being shared. That is the groundwork for running Active Record work across Ractors, and it changes how schema context is held internally.

Store the AssetTagHelper settings in singleton class attributes rails/rails

by Étienne Barrié

The six AssetTagHelper settings leave class variables for singleton class attributes because non-main Ractors cannot read class variables on Ruby 4.0. The instance writers are removed, so any code reaching in to set those settings directly needs the new readers.

Freeze Active Record time zone related configuration: rails/rails

by Edouard CHIN

The two Active Record time zone related configs are frozen to stay Ractor-accessible, and the Railtie mutation was moved because it previously ran after the freeze. Apps that mutate those configs at runtime, rather than in an initializer, will hit the freeze.

Avoid a redundant join in scoped through associations rails/rails

by David Paluy

When a has_many :through association's scope joins a table the through chain already joins, the merged scope now drops the duplicate join instead of joining the same table twice. Expect narrower SQL on scoped through associations, without behavior change in the results.

Re-enable PostgreSQL triggers when `disable_referential_integrity` raises rails/rails

by lukasedw

On PostgreSQL versions without NOT ENFORCED, disable_referential_integrity ran ALTER TABLE ... DISABLE TRIGGER ALL with no ensure, so a raising block left triggers disabled on every table. The new path re-enables them when the block raises.

v1.3.0 rails/mission_control-jobs

by rosa

Mission Control for Jobs adds batch support and sorts failed jobs in descending order, the latter flagged as a frequent request. Batches let you enqueue and track a group of jobs from the same dashboard you already use for queue state.

v1.26.0 rails/bootsnap

by byroot

Bootsnap fixes bootsnap precompile generating a corrupted cache entry when an already cached YAML file was modified without changing its size, and handles top level Coverage being defined without the real stdlib coverage module. If you ship YAML and precompile caches, this is the upgrade that stops the corruption.

$ ls rails/month/ # the briefings behind this review

Tue Sep 1 Rails cuts redundant joins in through associations Wed Sep 2 Ractor-aware schema context, FCM token error mapping Thu Sep 3 Ractor-safe config moves in Rails, Propshaft Fri Sep 4 PostgreSQL triggers stay disabled after failed yield Sat Sep 5 Layouts guide rewritten, Bootsnap 1.26.0 fixes cache corruption Sun Sep 6 Rails fixes docker-entrypoint to honor extra server flags Mon Sep 7 ActionDispatch drops regexp re-serialization per ParameterFilter build Tue Sep 8 JRuby 10 loads Active Support again; retry_job honors deferred options Wed Sep 9 Activeresource fixes URL encoding for IDs Thu Sep 10 Rails drops dead build tasks, Mission Control adds Solid Queue batches Fri Sep 11 Ractor-safe Active Record reflections and a faster BroadcastLogger Sat Sep 12 Ractor-safe time zone caches, default headers fixed in Live responses Sun Sep 13 ActionText to_markdown delimiter escapes leave stored XSS, vips boot fixes land Mon Sep 14 Active Storage gets a direct-upload kill switch, Postgres covering indexes stop leaking into primary keys Tue Sep 15 LeMans jails agent commands in their own namespaces Wed Sep 16 Rails skips leaky Ractor tests, speeds up TimeWithZone formatting Thu Sep 17 Postgres index lookups scoped to the resolved table, mariadb replaces mysql5 in dbconsole Fri Sep 18 kamipo retires three legacy Active Record holdovers Sat Sep 19 MySQL deadlock fix for find_or_create_by, Asset Pipeline guide rewrite Sun Sep 20 Bootsnap guards d_type for Illumos, Rails trims Ractor test skips Mon Sep 21 Active Model drops a Ruby 4.3 deprecation, Rails tests unbreak on libxml2 2.14 Tue Sep 22 BroadcastLogger#tagged fixed, STI subclass lookup stops materializing descendants Wed Sep 23 MySQL schema:load fixes, Server-Timing nested event fix, and Rails World 2026 agent benchmarks Thu Sep 24 GPT-6 Luna results land in Rails evals, site, and devcontainer gets Ruby 3.4.11 Fri Sep 25 Herb becomes the 8.2 default, Ractor-safe connections land Sat Sep 26 BigInteger casting truncation fixed, Rails guides rewritten Sun Sep 27 Rails dump skips extension-owned objects, solid_cable 4.1 adds encryption Mon Sep 28 Boolean pool config no longer crashes boot, except_on error matching fixed Tue Sep 29 Rails consolidates MySQL test schema, MiniSwen fixes bash mismatch Wed Sep 30 to_markdown link escaping, IndexedRow lookups fixed

Keep up with Rails in about 3 minutes: what actually shipped — the commits, pull requests, releases, and security advisories that matter.

or

fair warning: these emails are deeply technical. diffs, version numbers, CVEs, benchmark deltas. if that's not your idea of a good read, this isn't your newsletter.

Folds into your digest — weekly by default, monthly if you prefer. Unsubscribe in one click.

all rails reviews →