module StateMachineJob

Constants

VERSION

Public Class Methods

result_event_name(job, result) click to toggle source
# File lib/state_machine_job.rb, line 21
def self.result_event_name(job, result)
  [job.name.underscore.split('/'), result].flatten.join('_').to_sym
end
result_method_name(job, result) click to toggle source
# File lib/state_machine_job.rb, line 25
def self.result_method_name(job, result)
  "#{result_event_name(job, result)}!"
end

Public Instance Methods

perform(record, payload = {}) click to toggle source
# File lib/state_machine_job.rb, line 5
def perform(record, payload = {})
  record_name = "#{record.class.name} #{record.id}"
  logger.info "perform for #{record_name}"

  begin
    result = perform_with_result(record, payload)
  rescue StandardError
    record.restore_attributes unless record.valid?
    result = :error
    raise
  ensure
    logger.info "result #{result} for #{record_name}"
    record.send(StateMachineJob.result_method_name(self.class, result))
  end
end