$ cat rails/week/2026-08-24.log
the week in review · Aug 24 – Aug 30, 2026
Solid Queue hardens job finalization, Marcel 2 lands, ERB gains HTML-aware Herb
This week, Solid Queue stopped workers on finalization failure to clear stuck job claims, Marcel shipped its typeless Tika decoding and a 2.x major, and Rails introduced Herb, an HTML-aware ERB implementation.
Solid Queue hardened job finalization semantics. [1] Workers now stop when job finalization fails, freeing claims that previously stayed stuck. A follow-up scoped the finalization guard and restored perform's shape, tightening the behavior without changing the public API surface. Operators running Solid Queue should notice that a failed finalization now halts the worker, preventing claim leakage.
Marcel, the MIME type detection library, shipped two major improvements. [2] Typeless Tika matches are now decoded, and masked rule offsets are honored. This came with Marcel 2, a canonical MIME type release that Active Storage upgraded to this week . Applications relying on Active Storage should verify their MIME type expectations against the canonical set, as this is a breaking change in liberal detection. The direct embedded quote from the Marcel change notes: "Decode typeless Tika matches and honor masked rule offsets" [2].
Rails' ERB pipeline gained an HTML-aware implementation. [3] Herb, an HTML-aware ERB implementation, is now part of Rails. This prepares for more context-aware template handling, but it is not yet default. In the same spirit, user-supplied `<action-text-markdown>` is stripped during canonicalization [4], closing a potential injection vector in rich text handling.
Active Record internals got long-awaited refactors. [5] Result delivery now drives through QueryIntent, unifying how query results are routed. [6] Also, Query predicate expressions for Active Record types landed, take 2. Query logging is now split into separate start and finish steps [7], which should make per-step instrumentation possible without major rewrites.
Mission Control Jobs 1.2.0 shipped with job filtering and timezone fixes , completing the operations tooling story for Solid Queue users. For Active Support, `translate`'s `scope:` argument now resolves relative i18n keys that start with a leading period [8], a small but useful internationalization fix.
References
- [1] Stop workers when job finalization fails ↗ rails/solid_queue
- [2] Decode typeless Tika matches and honor masked rule offsets ↗ rails/marcel
- [3] Add Herb as an HTML-aware ERB implementation ↗ rails/rails
- [4] Strip user-supplied `<action-text-markdown>` while canonicalizing ↗ rails/rails
- [5] Drive result delivery through QueryIntent ↗ rails/rails
- [6] Query predicate expressions for Active Record types, take 2 ↗ rails/rails
- [7] Split query logging into separate start and finish steps ↗ rails/rails
- [8] Allow `translate`'s `scope:` argument to resolve relative i18n keys with leading period ↗ rails/rails
$ ls rails/week/ # the briefings behind this review