Sha256: b618a68874ded545bc442fa38a57fb900768a9c970a7a76bdc1368d83589a792

Contents?: true

Size: 986 Bytes

Versions: 11

Compression:

Stored size: 986 Bytes

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
    around_perform do |job, block|
      @job_log = CanvasSync::JobLog.create(
          started_at: Time.now,
          job_class: self.class.name,
          job_arguments: job.arguments
      )

      begin
        block.call
      rescue => e
        @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.status ||= JobLog::SUCCESS_STATUS
          @job_log.save!
        end
      end
    end

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

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
canvas_sync-0.3.12 lib/canvas_sync/job.rb
canvas_sync-0.3.11 lib/canvas_sync/job.rb
canvas_sync-0.3.10 lib/canvas_sync/job.rb
canvas_sync-0.3.9 lib/canvas_sync/job.rb
canvas_sync-0.3.8 lib/canvas_sync/job.rb
canvas_sync-0.3.7 lib/canvas_sync/job.rb
canvas_sync-0.3.6 lib/canvas_sync/job.rb
canvas_sync-0.3.5 lib/canvas_sync/job.rb
canvas_sync-0.3.3 lib/canvas_sync/job.rb
canvas_sync-0.3.2 lib/canvas_sync/job.rb
canvas_sync-0.3.1 lib/canvas_sync/job.rb