Use Module#prepend for Rake integration if Ruby version is new enough #559
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.
Goal
To fix #556 (an infinite mutual recursion issue when something else monkey patches
Rake::Task
withModule#prepend
)Changeset
Changed
lib/bugsnag/integrations/rake.rb was updated to use
Module#prepend
if it was available on the currently running Ruby version.Tests
Discussion
Alternative Approaches
Another approach might be to use a global or thread-local variable to keep track of Rake task names that are running and to return early if you encounter the same task name again, but that seems error-prone and possibly messy.
Outstanding Questions
The duplicate logic is bad, but trying to figure out a way to refactor it with metaprogramming seemed bad too.
Linked issues
Fixes #556
Review
For the submitter, initial self-review:
For the pull request reviewer(s), this changeset has been reviewed for: