Module: StateMachineJob

Defined in:
lib/state_machine_job.rb,
lib/state_machine_job/macro.rb,
lib/state_machine_job/version.rb

Defined Under Namespace

Modules: Macro

Constant Summary collapse

VERSION =
'3.1.0'.freeze

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.result_event_name(job, result) ⇒ Object



21
22
23
# 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) ⇒ Object



25
26
27
# File 'lib/state_machine_job.rb', line 25

def self.result_method_name(job, result)
  "#{result_event_name(job, result)}!"
end

Instance Method Details

#perform(record, payload = {}) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 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