diff --git a/lib/whenever/cron.rb b/lib/whenever/cron.rb index fe6c58ad..23fa0f41 100644 --- a/lib/whenever/cron.rb +++ b/lib/whenever/cron.rb @@ -92,7 +92,8 @@ def parse_time raise ArgumentError, "Time must be in minutes or higher" when Whenever.seconds(1, :minute)...Whenever.seconds(1, :hour) minute_frequency = @time / 60 - timing[0] = comma_separated_timing(minute_frequency, 59, @at || 0) + starting_minute = @at.is_a?(Time) ? @at.min : @at + timing[0] = comma_separated_timing(minute_frequency, 59, starting_minute || 0) when Whenever.seconds(1, :hour)...Whenever.seconds(1, :day) hour_frequency = (@time / 60 / 60).round timing[0] = @at.is_a?(Time) ? @at.min : @at diff --git a/test/unit/cron_test.rb b/test/unit/cron_test.rb index 42817943..aac7d480 100644 --- a/test/unit/cron_test.rb +++ b/test/unit/cron_test.rb @@ -16,6 +16,7 @@ class CronTest < Whenever::TestCase assert_equal '* * * * *', parse_time(Whenever.seconds(1, :minute)) assert_equal '0,5,10,15,20,25,30,35,40,45,50,55 * * * *', parse_time(Whenever.seconds(5, :minutes)) assert_equal '7,14,21,28,35,42,49,56 * * * *', parse_time(Whenever.seconds(7, :minutes)) + assert_equal '5,12,19,26,33,40,47,54 * * * *', parse_time(Whenever.seconds(7, :minutes), 'Test Task', '9:05 am') assert_equal '0,30 * * * *', parse_time(Whenever.seconds(30, :minutes)) assert_equal '32 * * * *', parse_time(Whenever.seconds(32, :minutes)) assert '60 * * * *' != parse_time(Whenever.seconds(60, :minutes)) # 60 minutes bumps up into the hour range