Address Ruby 2.7 kwargs edge case #1425
Merged
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.
Closes #1423
5c071d4 fixed most kwarg deprecation warnings coming from within
factory_bot, but using the Ruby 3-style argument forwarding does not
handle every case.
To handle the case of
initialize_with
being used with a method thattakes a final hash argument, this commit adds an additional branch to
this code to use
ruby2_keywords
for Ruby >= 2.7 and < 3.0. On 3.0 weuse the 3.0-style forwarding.
I added a tests that was outputting a deprecation warning on Ruby 2.7
before this change, but that no longer outputs the warning after this
change.
Yes, this is a bit of a mess, but I don't see a better way. I got
inspiration here from this fantastic blog post on argument delegating
with Ruby 2.7 and 3.