Remove deprecated non-symbol access to nested config_for hashes #37876
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
This fixes an issue with #37870 where nested hashes returned by
config_for
could return Hash subclasses instead of strictly a Hash when callingto_hash
.Since we changed the name of the
for
option in HashWithIndifferentAccess, and the class dealing with deprecations takes an options hash, there's no exception but the option is silently ignored, which in turn changes the behavior ofHashWithIndifferentAccess#to_hash
.Instead of fixing the code, this removes the deprecation code, which also solves the issue.
Other Information
I used the
symbolize_names
optionYAML.load
, which seems to be the first usage of it in Rails. This required me to symbolize the environment name, and the"shared"
special key.Another possibility would be to use
deep_symbolize_keys
as was done before #35198, but since we're loading the configuration file ourselves, it felt like an unnecessary traversal of the whole data structure. Let me know if that was a mistake.@rafaelfranca
cc @byroot @Edouard-chin @paracycle @Morriar