aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib/active_support/core_ext/range/each.rb
diff options
context:
space:
mode:
authorAndrew White <andrew.white@unboxed.co>2017-11-07 11:33:08 +0000
committerAndrew White <andrew.white@unboxed.co>2017-11-08 10:33:34 +0000
commit2b434d6f79813dcad162b158fd2b60e34a725ba1 (patch)
tree4f0251e4b5d0f8d973e07085df71f1d126ac621b /activesupport/lib/active_support/core_ext/range/each.rb
parent52d60ec46c9eba98423acfce2680e76bdc1cab36 (diff)
downloadrails-2b434d6f79813dcad162b158fd2b60e34a725ba1.tar.gz
rails-2b434d6f79813dcad162b158fd2b60e34a725ba1.tar.bz2
rails-2b434d6f79813dcad162b158fd2b60e34a725ba1.zip
Allow `Range#include?` on TWZ ranges
In #11474 we prevented TWZ ranges being iterated over which matched Ruby's handling of Time ranges and as a consequence `include?` stopped working with both Time ranges and TWZ ranges. However in ruby/ruby@b061634 support was added for `include?` to use `cover?` for 'linear' objects. Since we have no way of making Ruby consider TWZ instances as 'linear' we have to override `Range#include?`. Fixes #30799.
Diffstat (limited to 'activesupport/lib/active_support/core_ext/range/each.rb')
-rw-r--r--activesupport/lib/active_support/core_ext/range/each.rb4
1 files changed, 3 insertions, 1 deletions
diff --git a/activesupport/lib/active_support/core_ext/range/each.rb b/activesupport/lib/active_support/core_ext/range/each.rb
index cdff6393d7..2f22cd0e92 100644
--- a/activesupport/lib/active_support/core_ext/range/each.rb
+++ b/activesupport/lib/active_support/core_ext/range/each.rb
@@ -1,5 +1,7 @@
# frozen_string_literal: true
+require "active_support/time_with_zone"
+
module ActiveSupport
module EachTimeWithZone #:nodoc:
def each(&block)
@@ -15,7 +17,7 @@ module ActiveSupport
private
def ensure_iteration_allowed
- raise TypeError, "can't iterate from #{first.class}" if first.is_a?(Time)
+ raise TypeError, "can't iterate from #{first.class}" if first.is_a?(TimeWithZone)
end
end
end