-
Notifications
You must be signed in to change notification settings - Fork 21.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
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
@@ -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?` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
range?
-> cover?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes! of course.
@@ -1,25 +0,0 @@ | |||
# frozen_string_literal: true |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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:
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you. Done.
26f95f8
to
a2e9e5d
Compare
activesupport/CHANGELOG.md
Outdated
|
||
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. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Cleaned up. I hope I did not go too far by also removing the module name.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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`. " \ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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
activesupport/CHANGELOG.md
Outdated
* 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 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There's a missing #
in Range===
here.
activesupport/CHANGELOG.md
Outdated
|
||
To use: `require "active_support/core_ext/compare_range"`. | ||
|
||
*Requiring core_ext/range/include_range now causes a deprecation warnning* |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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
activesupport/CHANGELOG.md
Outdated
@@ -1,3 +1,14 @@ | |||
* Allow Range#=== and Range#cover? on Range | |||
|
|||
`Range#cover?` can now accept a range argument like `Range#include` and |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Range#include
-> Range#include?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fixed.
activesupport/CHANGELOG.md
Outdated
`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* |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
active_support_core_ext
-> active_support/core_ext
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"now causes a deprecation warning" -> "is now deprecated"
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fixed.
activesupport/CHANGELOG.md
Outdated
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.* |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
active_support/core_ext/compare_range
-> active_support/core_ext/range/compare_range
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fixed.
634f848
to
e04a79e
Compare
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