Sha256: 818f612ed848a48a521682286399187858b92d3d78bbcd8af6b970afc49208b2
Contents?: true
Size: 1.31 KB
Versions: 3
Compression:
Stored size: 1.31 KB
Contents
require "active_job" module CanvasSync # Inherit from this class to build a Job that will log to the canvas_sync_job_logs table class Job < ActiveJob::Base before_enqueue do |job| create_job_log(job) end around_perform do |job, block| @job_log = CanvasSync::JobLog.find_by(job_id: job.job_id) || create_job_log(job) @job_log.status = JobLog::RUNNING_STATUS @job_log.started_at = Time.now @job_log.save begin block.call @job_log.status = JobLog::SUCCESS_STATUS rescue => e # rubocop:disable Style/RescueStandardError @job_log.exception = "#{e.class}: #{e.message}" @job_log.backtrace = e.backtrace @job_log.status = JobLog::ERROR_STATUS raise e ensure if @job_log.job_class == "CanvasSync::Jobs::ReportChecker" && @job_log.status != JobLog::ERROR_STATUS @job_log.destroy else @job_log.completed_at = Time.now @job_log.save! end end end def report_checker_wait_time Rails.env.development? ? 1.second : 30.seconds end 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 end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
canvas_sync-0.5.4 | lib/canvas_sync/job.rb |
canvas_sync-0.5.3 | lib/canvas_sync/job.rb |
canvas_sync-0.5.2 | lib/canvas_sync/job.rb |