Frozen Hashes with Psych 3.3.2+/4.0 from YAML
Opened this issue · 1 comments
Following up on #648
This change happens whenever psych 3.3.2+ (or 4.0/5.0) is loaded, either as a gem, or as part of default gems for Ruby 3.1/Rails 7.1 (or irb 1.8.0 which brought in a new psych via ruby/irb#703, though they are reverting that part ).
Previous ruby's (3.0/2.7.8/etc) had earlier versions of psych as a Default gem so folks wouldn't have run into this unless they intentionally loaded a new psych version.
The change in psych is:
ruby/psych@cb50aa8
This is because unsafe_load_files now exists so the hash is now frozen by i18n.
Lines 248 to 250 in 32c957e
There's a few scenarios this can break, but as an example, one backend this breaks is https://github.com/annkissam/i18n-recursive-lookup (which admittedly, is pretty old)
which tries to recursively update the backend.
so 2 questions:
- Any recommendations on alternative backends for recursive lookups that work with modern i18n?
- or a hook to skip freezing if needed would be great