Class: SpreeCmCommissioner::MaintenanceTask

Inherits:
Base
  • Object
show all
Includes:
StoreMetadata
Defined in:
app/models/spree_cm_commissioner/maintenance_task.rb

Constant Summary collapse

MAX_ATTEMPTS =
5

Instance Method Summary collapse

Instance Method Details

#async_executeObject



24
25
26
# File 'app/models/spree_cm_commissioner/maintenance_task.rb', line 24

def async_execute
  SpreeCmCommissioner::MaintenanceTasks::ProcessJob.perform_later(task_id: id)
end

#executeObject

Execute the maintenance task with error handling and attempt tracking



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'app/models/spree_cm_commissioner/maintenance_task.rb', line 29

def execute
  log_run("Attempt #{attempt_count + 1} started at #{Time.current.iso8601}")
  update(attempt_count: attempt_count + 1)

  maintain

  log_run("Completed at #{Time.current.iso8601}")
  update!(completed_at: Time.current)

# Don't re-raise - continue processing other tasks
rescue StandardError => e
  log_run("Failed at #{Time.current.iso8601}: #{e.message}")
  update(last_error: e.message)
  log_failure(e)
end

#maintainObject

Override in subclasses with specific maintenance logic

Raises:

  • (NotImplementedError)


46
47
48
# File 'app/models/spree_cm_commissioner/maintenance_task.rb', line 46

def maintain
  raise NotImplementedError, "#{self.class} must implement #maintain"
end