$ the-wire · showcase
Ractor-safe config moves in Rails, Propshaft
By RepoJournal · Filed · About Rails
Rails and Propshaft shift module-level settings from class variables to instance variables, preparing 4.0 Ractor support.
Rails core is migrating configuration storage off class variables so that non-main Ractors can read settings on Ruby 4.0. The MimeNegotiation settings [1] and AssetTagHelper's six settings [2] now live in instance variables on the module, with delegator class accessors replacing the old mattr_accessor-generated instance methods. Active Record's time zone related configuration is also frozen to make it Ractor-accessible [3]. This is a breaking change for any code that wrote to these settings through the removed instance writers, though reads continue to work through the delegators.
Propshaft applies the same pattern to `Propshaft.logger`, which was a class variable non-main Ractors cannot read on released Rubies [4]. Every call site already goes through `Propshaft.logger`, so moving to an instance variable on `Propshaft` itself is transparent to consumers. Together with the Rails changes, these commits clear the way for Ractor use across the asset pipeline and request negotiation code paths.
In other news, the Agents on Rails leaderboard adds Claude Fable 5.1 and GLM 5.3 Flash (formerly ox-alpha), retiring the ox-alpha name [5][6]. The accompanying website update normalizes model names (for example GPT-5.6 Sol, Claude Opus 5) and flips charts so the best models sit top-right on every axis, which "makes charts easier to read" according to the report [6].
Action items
References
- [1] Store MimeNegotiation settings as instance variables ↗ rails/rails
- [2] Store the AssetTagHelper settings in singleton class attributes ↗ rails/rails
- [3] Freeze Active Record time zone related configuration: ↗ rails/rails
- [4] Store the logger in a singleton class attribute ↗ rails/propshaft
- [5] Add Claude Fable 5.1 and GLM 5.3 Flash runs ↗ rails/ai-evals
- [6] Agents on Rails: Claude Fable 5.1 and GLM 5.3 Flash ↗ rails/website