Allow Range#=== and Range#cover? on Range #32938
Conversation
r? @kamipo (@rails-bot has picked a reviewer for you, use r? to override) |
If we go with this (see parallel discussion in #32945), I think we should also address |
Thank you both. I've added Better? |
PS: What do you think about moving |
@@ -2889,9 +2889,9 @@ As the example depicts, the `:db` format generates a `BETWEEN` SQL clause. That | |||
|
|||
NOTE: Defined in `active_support/core_ext/range/conversions.rb`. | |||
|
|||
### `include?` | |||
### `===`, `include?`, and `range?` |
eugeneius
May 21, 2018
Member
range?
-> cover?
range?
-> cover?
utilum
May 22, 2018
Author
Contributor
Yes! of course.
Yes! of course.
@@ -1,25 +0,0 @@ | |||
# frozen_string_literal: true |
eugeneius
May 21, 2018
Member
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:
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:
utilum
May 22, 2018
Author
Contributor
Thank you. Done.
Thank you. Done.
|
||
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. |
eugeneius
May 22, 2018
Member
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.
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.
utilum
May 22, 2018
Author
Contributor
Cleaned up. I hope I did not go too far by also removing the module name.
Cleaned up. I hope I did not go too far by also removing the module name.
eugeneius
May 22, 2018
Member
I think that's the right call - users don't interact with the module directly, they just call the methods that it modifies.
I think that's the right call - users don't interact with the module directly, they just call the methods that it modifies.
end | ||
end | ||
end | ||
ActiveSupport::Deprecation.warn "You have required `active_support/core_ext/range/include_range`. " \ |
utilum
May 22, 2018
Author
Contributor
Corrected.
Corrected.
|
||
The methods `Range#include?` and `Range#===` say whether some value falls between the ends of a given instance: | ||
The methods `Range#===`, `Range#include?` and `Range#cover?` say whether some value falls between the ends of a given instance: |
eugeneius
May 22, 2018
Member
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").
🤓
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").
utilum
May 22, 2018
Author
Contributor
Oxford in a comma, it's serious ;)
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*
* Allow Range#=== and Range#cover? on Range | ||
|
||
`Range#cover?` can now accept a range argument like `Range#include` and | ||
`Range===`. `Range#===` works correctly on Ruby 2.6. `Range#include?` is moved |
eugeneius
May 22, 2018
Member
There's a missing #
in Range===
here.
There's a missing #
in Range===
here.
|
||
To use: `require "active_support/core_ext/compare_range"`. | ||
|
||
*Requiring core_ext/range/include_range now causes a deprecation warnning* |
eugeneius
May 22, 2018
Member
"warnning" -> "warning"
Can you also add active_support/
to the start of the filename, to match the example above?
"warnning" -> "warning"
Can you also add active_support/
to the start of the filename, to match the example above?
eugeneius
May 22, 2018
Member
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.
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.
utilum
May 22, 2018
Author
Contributor
Right on.
Sorry about all the typos.
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. |
@@ -1,3 +1,14 @@ | |||
* Allow Range#=== and Range#cover? on Range | |||
|
|||
`Range#cover?` can now accept a range argument like `Range#include` and |
eugeneius
May 22, 2018
Member
Range#include
-> Range#include?
Range#include
-> Range#include?
utilum
May 22, 2018
Author
Contributor
Fixed.
Fixed.
`Range#===`. `Range#===` works correctly on Ruby 2.6. `Range#include?` is moved | ||
into a new file, with these two methods. | ||
|
||
*Requiring active_support_core_ext/range/include_range now causes a deprecation warning* |
eugeneius
May 22, 2018
Member
active_support_core_ext
-> active_support/core_ext
active_support_core_ext
-> active_support/core_ext
eugeneius
May 22, 2018
Member
"now causes a deprecation warning" -> "is now deprecated"
"now causes a deprecation warning" -> "is now deprecated"
utilum
May 22, 2018
Author
Contributor
Fixed.
Fixed.
into a new file, with these two methods. | ||
|
||
*Requiring active_support_core_ext/range/include_range now causes a deprecation warning* | ||
*Use `require "active_support/core_ext/compare_range"` instead.* |
eugeneius
May 22, 2018
Member
active_support/core_ext/compare_range
-> active_support/core_ext/range/compare_range
active_support/core_ext/compare_range
-> active_support/core_ext/range/compare_range
utilum
May 22, 2018
Author
Contributor
Fixed.
Fixed.
Allow Range#=== and Range#cover? on Range
Allow Range#=== and Range#cover? on Range
Allow Range#=== and Range#cover? on Range
ruby/ruby@989e07c features switching
Range#===
to use internalr_cover_p
instead of rubyland
include?
. This breaks expected behavior ofActiveSupport::CoreExt::Range
documented 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