$ the-wire · showcase
immutable_strings_by_default stops eating column types; URL helpers stay optimized
By RepoJournal · Filed · About Rails · Composed from the cited sources · methodology
Rails fixed a type-inference bug where immutable_strings_by_default quietly demoted text and PostgreSQL xml, citext, ltree, tsvector and macaddr columns to plain :string, and restored the NumericalityValidator constant that outside code still references.
Scope `immutable_strings_by_default` to string columns rails/rails
The setting applied to every column whose type subclassed ActiveModel::Type::String, which was never the intent: text columns and PostgreSQL's xml, citext, ltree, tsvector and macaddr columns were inferred as :string and lost their own behavior, with OID::Xml#serialize no longer wrapping values in Xml::Data and OID::Macaddr no longer comparing case-insensitively. If you run with immutable_strin...
Deprecate ActiveRecord::Validations::NumericalityValidator rails/rails
426bd6a5 dropped the class because Active Model's validator can now look up the attribute type itself, but code outside Rails switches on the constant alongside ActiveRecord::Validations::PresenceValidator and friends. Cherry-picking that removal gives you a NameError in any such case/when branch, so the constant comes back deprecated rather than deleted.
Keep the optimized URL helper for options that do not shape the path rails/rails
Named route helpers bailed out of the optimized path on any option other than a sole :format, sending post_url(post, host: "example.org"), post_path(post, anchor: "comments") and posts_path(page: 2) through the full url_for pipeline even though none of those options shape the path. The optimized helper now survives options that only build the URL around the path.
Read and write loadpath cache in binmode rails/bootsnap
The loadpath cache is now read and written in binmode, fixing Windows compatibility, per byroot: "For windows compatibility."
Merge pull request #581 from czj/ci-old-rubies-on-ubuntu-24.04 rails/bootsnap
Elsewhere in bootsnap: custom compilers keep working when DISABLE_BOOTSNAP_COMPILE_CACHE=1 is set, and CI runs for Ruby older than 3.2 move to ubuntu-24.04 now that ubuntu-latest points at 26.04.
Action items