114 wires and counting

$ follow Rails

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.

$ status

wire 2026-09-04
stories 23

© 2026 RepoJournal Home Showcase Explore How it works Privacy

$ the-wire · showcase

PostgreSQL triggers stay disabled after failed yield

By RepoJournal · Filed · About Rails

A Rails fix wraps trigger re-enabling in an ensure block so foreign keys are not left disabled when disable_referential_integrity raises.

Rails fixed a latent database-safety bug in PostgreSQL: `disable_referential_integrity` now re-enables triggers even when the yielded block raises [1]. Previously, on PostgreSQL versions before 18.4 (those without `NOT ENFORCED`), the method disabled triggers with `ALTER TABLE ... DISABLE TRIGGER ALL`, ran the block, then relied on normal execution to re-enable them. A raised exception left every foreign key in the database disabled for all later connections, unless the whole call happened inside a rolled-back transaction. This is a breaking change only in the sense that failures no longer corrupt catalog state; upgrade before running destructive fixtures or seed scripts.

Routing test assertions now respect PATCH and QUERY when you use `method: :all` [2]. `assert_recognizes` and `assert_routing` previously iterated only GET, POST, PUT, and DELETE, so a route drawn with `via: [:get, :post, :put, :delete]` could pass an `:all` assertion even though PATCH and QUERY routes were not checked. The fix brings the test helper in line with how `via: :all` actually dispatches.

Bootsnap fixed a precompilation bug where regenerating an existing cache entry of the same size would silently produce an empty cache file [3]. This only affects precompilation (not regular cache reads), so most apps will notice it only if they regenerate caches in CI or at deploy time. Upstream says "The source would be read twice but without rewinding, hence emptying it" [3].

Quick answers

What shipped in Rails on September 4, 2026?
A Rails fix wraps trigger re-enabling in an ensure block so foreign keys are not left disabled when disable_referential_integrity raises. In total, 16 commits and 7 pull requests landed.
Who contributed to Rails on September 4, 2026?
8 developers shipped this update, including Kyle Fazzari, carlosdanielpohlod, lukasedw, Guillermo Iguaran, Iliana Hadzhiatanasova, Jean Boussier, Nick Pezza, and Vladimir Dementyev.
What were the notable Rails updates?
Re-enable PostgreSQL triggers when `disable_referential_integrity` raises, Check PATCH and QUERY in routing assertions with method: :all, and Fix precompilation when regenerating an existing cache entry of the same size.