Class: CanvasSync::Job

Inherits:
ActiveJob::Base
  • Object
show all
Defined in:
lib/canvas_sync/job.rb

Overview

Inherit from this class to build a Job that will log to the canvas_sync_job_logs table

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#job_logObject (readonly)

Returns the value of attribute job_log.



6
7
8
# File 'lib/canvas_sync/job.rb', line 6

def job_log
  @job_log
end

Instance Method Details

#create_job_log(job) ⇒ Object



53
54
55
56
57
58
59
60
# File 'lib/canvas_sync/job.rb', line 53

def create_job_log(job)
  CanvasSync::JobLog.create(
    job_class: self.class.name,
    job_arguments: job.arguments,
    job_id: job.job_id,
    status: JobLog::ENQUEUED_STATUS,
  )
end

#report_checker_wait_timeObject



49
50
51
# File 'lib/canvas_sync/job.rb', line 49

def report_checker_wait_time
  Rails.env.development? ? 1.second : 30.seconds
end

#update_or_create_model(model, params) ⇒ Object



62
63
64
65
66
67
68
69
70
71
72
# File 'lib/canvas_sync/job.rb', line 62

def update_or_create_model(model, params)
  if model.respond_to? :create_or_update
    model.create_or_update(params)
  elsif model.method_defined? :update_from_api_params!
    instance = model.find_or_initialize_by(canvas_id: params['id'])
    instance.update_from_api_params!(params)
    instance
  else
    raise "Could not create/update #{model.name}. It must have a create_or_update(params) ClassMethod or implement ApiSyncable."
  end
end