diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2019-01-08 14:36:00 -0800 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2019-01-08 15:05:40 -0800 |
commit | 36de9eadaa9193cbc43a501aa345636d77d3b5c1 (patch) | |
tree | df7eb69871a71d5f174efcb068667993a4f75d25 | |
parent | 80c7038bbc8e83762f4396b18260f470d8621995 (diff) | |
download | rails-36de9eadaa9193cbc43a501aa345636d77d3b5c1.tar.gz rails-36de9eadaa9193cbc43a501aa345636d77d3b5c1.tar.bz2 rails-36de9eadaa9193cbc43a501aa345636d77d3b5c1.zip |
Duration#coerce should always return a Scalar
This speeds up Range.new(x, y).step(Duration).each { ... }
Fixes #34888
-rw-r--r-- | activesupport/lib/active_support/duration.rb | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/activesupport/lib/active_support/duration.rb b/activesupport/lib/active_support/duration.rb index 314c926ac0..97b4634d7b 100644 --- a/activesupport/lib/active_support/duration.rb +++ b/activesupport/lib/active_support/duration.rb @@ -214,8 +214,11 @@ module ActiveSupport end def coerce(other) #:nodoc: - if Scalar === other + case other + when Scalar [other, self] + when Duration + [Scalar.new(other.value), self] else [Scalar.new(other), self] end |