Job options

This commit is contained in:
Dzmitry Plashchynski
2016-11-29 15:41:39 +02:00
parent 64dde82342
commit f5d65b6cc7
3 changed files with 16 additions and 4 deletions

View File

@@ -6,15 +6,16 @@ module Crono
class Job
include Logging
attr_accessor :performer, :period, :job_args, :last_performed_at,
attr_accessor :performer, :period, :job_args, :last_performed_at, :job_options,
:next_performed_at, :job_log, :job_logger, :healthy, :execution_interval
def initialize(performer, period, job_args)
def initialize(performer, period, job_args, job_options = {})
self.execution_interval = 0.minutes
self.performer, self.period = performer, period
self.job_args = JSON.generate(job_args)
self.job_log = StringIO.new
self.job_logger = Logger.new(job_log)
self.job_options = job_options
self.next_performed_at = period.next
@semaphore = Mutex.new
end

View File

@@ -8,7 +8,7 @@ module Crono
end
def every(period, *args)
@job = Job.new(@performer, Period.new(period, *args), @job_args)
@job = Job.new(@performer, Period.new(period, *args), @job_args, @options)
@scheduler.add_job(@job)
self
end
@@ -17,6 +17,11 @@ module Crono
@job.execution_interval = execution_interval if @job
self
end
def with_options(options)
@options = options
self
end
end
def self.perform(performer, *job_args)