Use Rainbow directly instead of relying on String refinement. #131
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.
Description
Use the Rainbow gem directly (i.e.
Rainbow("text").red
) instead of relying on the String monkey patching.I checked for usage of the following methods:
Those are the basic methods defined by the rainbow. I skipped the methods covered by the problematic "method_missing".
Motivation and Context
Fix #130
As raised in the #130, the release 1.4.0 impacted performance of a couple apps. The underlying issue is that the rainbow gem is refining the String class and that the
method_missing
is overwritten.The
refine
seems have some performance issues on some of the ruby releases: https://bugs.ruby-lang.org/issues/18572This PR is a proposal for mitigating this issue without a need of fixing rainbow gem nor upgrading the ruby version. If the changes here aren't too annoying maybe that could be a way to go? :)
How Has This Been Tested?
I run it against one of the endpoint of the affected application.
average response of 100 requests:
I am not sure whether there is a way of testing this in any other way 🤷