class Actn::Jobs::Base

Attributes

job[RW]
record[RW]

Public Class Methods

new(job) click to toggle source
# File lib/actn/jobs/base.rb, line 11
def initialize job
  @job = job
  @record = job.record || Oj.load(DB::Set[job.table_name].find_by({uuid: job.record_uuid}))
end

Public Instance Methods

perform() click to toggle source
# File lib/actn/jobs/base.rb, line 16
def perform
end
test_and_perform() click to toggle source
# File lib/actn/jobs/base.rb, line 19
def test_and_perform
  
  unless self.record
    $stderr.puts "[#{self.class.name}#test_and_perform, #{Time.now}]: Record not found"
    return 
  end

  if job.hook['conditions'].nil? || ( !job.hook['conditions'].map{|c| eval(c,binding) ? true : false }.include?(false) )

    run

  else
    
    Jobs.logger.warn "Conditions failed, CONDITIONS: #{job.hook['conditions']} RECORD: #{self.record}"          
    job.update(result: {error: "Conditions failed"})
    
  end
  
end

Private Instance Methods

run() click to toggle source
# File lib/actn/jobs/base.rb, line 41
def run
  begin
    result = perform
  rescue Exception => e
    job.update(result: {error: {message: e.message, stack: e.respond_to?(:backtrace) ? e.backtrace : e.inspect}})
    Jobs.logger.error e
  end
  job.update(result: result)
end