Sha256: a7d3202fc3233e53cf4d86055356eb2320d1df78e7bc3a2bc6f051dcc0d34b1a

Contents?: true

Size: 983 Bytes

Versions: 1

Compression:

Stored size: 983 Bytes

Contents

module JobNotifier
  module Notifier
    extend ActiveSupport::Concern

    included do
      def perform(*args)
        result = perform_with_feedback(*args)
        save_success_feedback(result)
      rescue JobNotifier::Error::Validation => ex
        save_error_feedback(ex.error)
      rescue StandardError => ex
        save_error_feedback("unknown")
        raise ex
      end

      def save_error_feedback(error)
        JobNotifier::Job.update_feedback(job_id, error, :failed)
      end

      def save_success_feedback(data)
        JobNotifier::Job.update_feedback(job_id, data, :finished)
      end

      before_enqueue do |job|
        if job.respond_to?(:perform_with_feedback)
          identifier = job.arguments.shift
          raise JobNotifier::Error::InvalidIdentifier.new if identifier.blank?
          JobNotifier::Job.create!(identifier: identifier, job_id: job.job_id)
        end
      end
    end
  end
end

ActiveJob::Base.include(JobNotifier::Notifier)

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
job_notifier-0.1.0 lib/job_notifier/notifier.rb