Allow Range#=== and Range#cover? on Range#32938
Conversation
|
r? @kamipo (@rails-bot has picked a reviewer for you, use r? to override) |
fc2b7a0 to
10fdc28
Compare
|
If we go with this (see parallel discussion in #32945), I think we should also address |
9e6472e to
5104fb1
Compare
|
Thank you both. I've added Better? |
5104fb1 to
a26abf6
Compare
|
PS: What do you think about moving |
bf54f75 to
4e6dd71
Compare
There was a problem hiding this comment.
The existence of this file is documented, and users may depend on it:
http://guides.rubyonrails.org/v5.2.0/active_support_core_extensions.html#include-questionmark
If we want to remove it, it needs a deprecation cycle first. Here's an example of how that might look:
26f95f8 to
a2e9e5d
Compare
There was a problem hiding this comment.
This is excellent detail for anyone interested in why the change was necessary, but the changelog should be a high level description of what changed from the user's perspective - it's probably sufficient to say that Range#cover? can now be given a range like Range#=== and Range#include?, and Range#=== works correctly when given a range on Ruby 2.6.
There was a problem hiding this comment.
Cleaned up. I hope I did not go too far by also removing the module name.
There was a problem hiding this comment.
I think that's the right call - users don't interact with the module directly, they just call the methods that it modifies.
There was a problem hiding this comment.
http://guides.rubyonrails.org/v5.2.0/api_documentation_guidelines.html#oxford-comma
Please use the Oxford comma ("red, white, and blue", instead of "red, white and blue").
🤓
There was a problem hiding this comment.
Oxford in a comma, it's serious ;)
ruby/ruby@989e07c features switching `Range#===` to use internal `r_cover_p` instead of rubyland `include?`. This breaks expected behavior of `ActiveSupport::CoreExt::Range` documented since at least 8b67a02. This patch adds overrides on `Range#cover?` and `Range#===` and places all three in a single module, `CompareWithRange`. *Requiring core_ext/range/include_range now causes a deprecation warnning*
a2e9e5d to
fccf3ad
Compare
There was a problem hiding this comment.
There's a missing # in Range=== here.
There was a problem hiding this comment.
"warnning" -> "warning"
Can you also add active_support/ to the start of the filename, to match the example above?
There was a problem hiding this comment.
We're telling the user that requiring this file is deprecated, but not what they need to do instead - it's pretty easy to infer that they should now require active_support/core_ext/compare_range, but ideally we'd explicitly state that.
There was a problem hiding this comment.
Right on.
Sorry about all the typos.
I'd recommend leaving it where it is, mostly just to avoid inflicting the mild inconvenience of a deprecation warning on anyone cherry-picking that file on its own. |
fccf3ad to
634f848
Compare
There was a problem hiding this comment.
Range#include -> Range#include?
There was a problem hiding this comment.
active_support_core_ext -> active_support/core_ext
There was a problem hiding this comment.
"now causes a deprecation warning" -> "is now deprecated"
There was a problem hiding this comment.
active_support/core_ext/compare_range -> active_support/core_ext/range/compare_range
634f848 to
e04a79e
Compare
Allow Range#=== and Range#cover? on Range
ruby/ruby@989e07c features switching
Range#===to use internalr_cover_pinstead of rubyland
include?. This breaks expected behavior ofActiveSupport::CoreExt::Rangedocumented since at least 8b67a02.This patch adds overrides on
Range#cover?andRange#===and places allthree in a single module,
CompareWithRange.See failures at:
https://travis-ci.org/rails/rails/jobs/380939901#L1224-L1247