lib/active_support/duration.rb in activesupport-8.0.0.beta1 vs lib/active_support/duration.rb in activesupport-8.0.0.rc1

- old
+ new

@@ -489,20 +489,24 @@ end if @parts.empty? time.since(sign * value) else - @parts.inject(time) do |t, (type, number)| - if type == :seconds - t.since(sign * number) - elsif type == :minutes - t.since(sign * number * 60) - elsif type == :hours - t.since(sign * number * 3600) - else - t.advance(type => sign * number) - end + @parts.each do |type, number| + t = time + time = + if type == :seconds + t.since(sign * number) + elsif type == :minutes + t.since(sign * number * 60) + elsif type == :hours + t.since(sign * number * 3600) + else + t.advance(type => sign * number) + end end + + time end end def respond_to_missing?(method, _) value.respond_to?(method)