Fix AWS patcher loading wrong constants when AWS is partially loaded #945
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.
Resolves #938.
There's a scenario when AWS is partially loaded such that certain constants are not available,
const_get
will search ancestors and use any matching constant there, which results in the wrong constant being patched.Additionally, despite providing a
false
flag to disable ancestor search,Module#const_get
seems to ignore this sometimes when Rails autoloading is present (at least the first time), causing it to still unexpectedly return the wrong constant.e.g.
In this PR we make sure to cross check the loaded constants against the list, then only collect what's actually available, rather than depending on
const_get
to resolve any namespace conflicts.