module ActiveJobLog::Loggeable::ClassMethods

Public Instance Methods

find_or_create_job(job_id) click to toggle source
# File lib/active_job_log/loggeable.rb, line 49
def find_or_create_job(job_id)
  where(job_id: job_id).where.not(status: :failed).last || create(job_id: job_id)
end
infer_duration_attr_from_status(status) click to toggle source
# File lib/active_job_log/loggeable.rb, line 61
def infer_duration_attr_from_status(status)
  case status
  when :queued
    :queued_at
  when :pending
    :started_at
  when :finished, :failed
    :ended_at
  else
    fail "invalid status"
  end
end
status_to_params(status) click to toggle source
# File lib/active_job_log/loggeable.rb, line 53
def status_to_params(status)
  time_attr = infer_duration_attr_from_status(status)
  {
    time_attr => DateTime.current,
    status: status
  }
end
update_job!(job_id, status, params = {}) click to toggle source
# File lib/active_job_log/loggeable.rb, line 42
def update_job!(job_id, status, params = {})
  params.merge!(status_to_params(status))
  job = find_or_create_job(job_id)
  job.update!(params)
  job
end