class Actionable::Job

Attributes

actionable[R]
payload[R]
target[R]

Public Class Methods

before_enqueue(id) click to toggle source
# File lib/actionable/job.rb, line 19
def self.before_enqueue(id)
  actionable = Actionable::Action.find(id)
  actionable.update_attributes(status: :enqueued)
  true
end
logger() click to toggle source
# File lib/actionable/job.rb, line 7
def self.logger
  defined?(Rails) ? Rails.logger : Resque.logger
end
new(target,payload={},actionable=nil) click to toggle source
# File lib/actionable/job.rb, line 52
def initialize(target,payload={},actionable=nil)
  @target = target
  @actionable = actionable
  @payload = HashWithIndifferentAccess.new(payload)
end
on_failure(err,id) click to toggle source
# File lib/actionable/job.rb, line 25
def self.on_failure(err,id)
  begin
    actionable = Actionable::Action.find(id)
    actionable.update_attributes({
      status: :failed,
      exception_message: err.message,
      exception_backtrace: err.backtrace
    })
    job = new(actionable.target,actionable.payload,actionable)
    job.on_failure(err) if job.respond_to?(:on_failure)
  rescue => e
    puts "Error in 'on_failure' handler: #{e.message}"
    logger.error("Error in 'on_failure' handler: #{e.message}")
    raise
  end
  raise err
end
perform(id) click to toggle source
# File lib/actionable/job.rb, line 43
def self.perform(id)
  actionable = Actionable::Action.find(id)
  actionable.update_attributes(status: :working)
  job = new(actionable.target,actionable.payload,actionable)
  job.perform
  actionable.update_attributes(status: :complete)
  job.on_success if job.respond_to?(:on_success)
end
queue() click to toggle source
# File lib/actionable/job.rb, line 15
def self.queue
  @queue ||= 'actionable'
end

Public Instance Methods

logger() click to toggle source
# File lib/actionable/job.rb, line 11
def logger
  self.class.logger
end