Sha256: d6e3767d58c618c93d80916b49ccedd304eb09824899c10634def2157d64870d

Contents?: true

Size: 1.02 KB

Versions: 6

Compression:

Stored size: 1.02 KB

Contents

module ActiveJobLog
  module LogExt
    extend ActiveSupport::Concern

    included do
      before_enqueue { |job| enqueue_job(job) }
      before_perform { |job| execute_job(job) }
      after_perform { |job| finish_job(job) }

      rescue_from(Exception) do |exception|
        fail_job(exception)
        raise exception
      end

      def enqueue_job(job)
        Job.update_job!(job.job_id, :queued, init_params(job))
      end

      def execute_job(job)
        Job.update_job!(job.job_id, :pending, init_params(job))
      end

      def finish_job(job)
        Job.update_job!(job.job_id, :finished)
      end

      def fail_job(exception)
        Job.update_job!(job_id, :failed, error: exception.message, stack_trace: exception.backtrace)
      end

      def init_params(job)
        {
          job_class: self.class.name,
          params: job.arguments,
          executions: job.try(:executions),
          queue_name: job.queue_name
        }
      end
    end
  end
end

ActiveJob::Base.send(:include, ActiveJobLog::LogExt)

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
active_job_log-1.2.0 lib/active_job_log/log_ext.rb
active_job_log-1.1.0 lib/active_job_log/log_ext.rb
active_job_log-1.0.0 lib/active_job_log/log_ext.rb
active_job_log-0.2.1 lib/active_job_log/log_ext.rb
active_job_log-0.2.0 lib/active_job_log/log_ext.rb
active_job_log-0.1.0 lib/active_job_log/log_ext.rb