According to this line in the specs ...
|
assert frequency.include? now |
... it seems to be intended, but just now it triggered a bug for me:
Montrose.every(:second).events.next de facto returns a time in past, because it will always return a time that has sub second time set to 0.
For example if you have a daily trigger Montrose.every(:day).at('18:00:00') and you run events.next at 15.01.2020 18:00:00.500 (half a second past 18:00:00), it returns 15.01.2020 18:00:00.000 which is in past (at least if you care about sub second precision).
Is this a bug? Shouldn't events.next never return a time in the past?
Edit: A workaround I just implemented is to do Montrose::Recurrence.new(recurrence).take(3).find { |time| time >= Time.current }.
According to this line in the specs ...
montrose/spec/montrose/frequency/secondly_spec.rb
Line 16 in 2487a31
Montrose.every(:second).events.nextde facto returns a time in past, because it will always return a time that has sub second time set to0.For example if you have a daily trigger
Montrose.every(:day).at('18:00:00')and you runevents.nextat15.01.2020 18:00:00.500(half a second past 18:00:00), it returns15.01.2020 18:00:00.000which is in past (at least if you care about sub second precision).Is this a bug? Shouldn't
events.nextnever return a time in the past?Edit: A workaround I just implemented is to do
Montrose::Recurrence.new(recurrence).take(3).find { |time| time >= Time.current }.