mirror of
https://github.com/plashchynski/crono.git
synced 2026-04-10 03:13:44 +02:00
Add option 'at'
This commit is contained in:
@@ -2,7 +2,7 @@ module Periodicity
|
||||
module Extensions
|
||||
class ActiveJob
|
||||
def self.perform_every(period, *args)
|
||||
@period = period
|
||||
@period = Period.new(period, *args)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,11 +1,24 @@
|
||||
module Periodicity
|
||||
class Period
|
||||
def initialize(period)
|
||||
def initialize(period, at: nil)
|
||||
@period = period
|
||||
@at_hour, @at_min = parse_at(at) if at
|
||||
end
|
||||
|
||||
def next
|
||||
@period.from_now
|
||||
@period.from_now.change({hour: @at_hour, min: @at_min}.compact)
|
||||
end
|
||||
|
||||
def parse_at(at)
|
||||
case at
|
||||
when String
|
||||
time = Time.parse(at)
|
||||
return time.hour, time.min
|
||||
when Hash
|
||||
return at[:hour], at[:min]
|
||||
else
|
||||
raise "Unknown 'at' format"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user