class Xronor::DSL
Constants
- DEFAULT_CRON_TIMEZONE
- DEFAULT_JOB_TEMPLATE
- DEFAULT_PREFIX
- DEFAULT_TIMEZONE
Public Class Methods
eval(body)
click to toggle source
# File lib/xronor/dsl.rb, line 11 def eval(body) self.new(body) end
new(body)
click to toggle source
# File lib/xronor/dsl.rb, line 20 def initialize(body) @result = OpenStruct.new( jobs: {}, options: { prefix: DEFAULT_PREFIX, timezone: DEFAULT_TIMEZONE, cron_timezone: DEFAULT_CRON_TIMEZONE, job_template: DEFAULT_JOB_TEMPLATE, }, ) instance_eval(body) end
seconds(number, units)
click to toggle source
# File lib/xronor/dsl.rb, line 15 def seconds(number, units) Xronor::DSL::NumericSeconds.seconds(number, units) end
Public Instance Methods
default(&block)
click to toggle source
# File lib/xronor/dsl.rb, line 34 def default(&block) @result.options.merge!(Xronor::DSL::Default.new(&block).result.to_h) end
every(frequency, options = {}, &block)
click to toggle source
# File lib/xronor/dsl.rb, line 38 def every(frequency, options = {}, &block) job = Xronor::DSL::Job.new(frequency, @result.options.merge(options), &block).result raise Xronor::DSL::DuplicatedError, "Job \"#{job.name}\" already exists" if @result.jobs[job.name] @result.jobs[job.name] = job end
job_template(template)
click to toggle source
# File lib/xronor/dsl.rb, line 44 def job_template(template) @result.options[:job_template] = template end
job_type(name, template)
click to toggle source
# File lib/xronor/dsl.rb, line 48 def job_type(name, template) Xronor::DSL::Job.class_eval do define_method(name) do |task, *args| options = { task: task } options.merge!(args[0]) if args[0].is_a? Hash job = process_template(template, options) @result.command = process_template(@options[:job_template], options.merge({ job: job })) end end end
result()
click to toggle source
# File lib/xronor/dsl.rb, line 59 def result @result end