Sha256: 5e675d3e242fb69637d470cab6cb03973c964bbed8a2547f24cd9d071450bca3

Contents?: true

Size: 1.73 KB

Versions: 14

Compression:

Stored size: 1.73 KB

Contents

module Para
  module Job
    class Base < ActiveJob::Base
      include ActiveJob::Status
      # Used to store job errors on the object
      include ActiveModel::Validations
      # Used to translate job name with rails default `activemodel` i18n keys
      extend  ActiveModel::Translation

      rescue_from Exception, with: :rescue_exception

      before_perform :store_job_type

      protected

      def store_job_type
        status.update(job_type: self.class.name)
      end

      def progress!
        ensure_total_progress
        progress.increment
      end

      def save_errors!
        status.update(errors: errors.full_messages)
      end

      # Default total progress to nil, making the UI show an animated porgress
      # bar, indicating work is in progress, but not the exact progress
      def total_progress
        nil
      end

      def ensure_total_progress
        return if @total_progress

        @total_progress ||= if respond_to?(:total_progress, true)
          progress.total = total_progress
        else
          progress[:total]
        end
      end

      def store(key, value = nil)
        if value
          status.update(key => value)
        else
          status[key]
        end
      end

      def rescue_exception(exception)
        status.update(status: :failed)

        tag_logger(self.class.name, job_id) do
          ActiveSupport::Notifications.instrument "failed.active_job",
              adapter: self.class.queue_adapter, job: self, exception: exception
        end

        if defined?(ExceptionNotifier)
          ExceptionNotifier.notify_exception(
            exception, data: { job: self.class.name, payload: arguments }
          )
        end

        raise exception
      end
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
para-0.7.4 lib/para/job/base.rb
para-0.7.3.p6 lib/para/job/base.rb
para-0.7.3.p5 lib/para/job/base.rb
para-0.7.3.p4 lib/para/job/base.rb
para-0.7.3.p3 lib/para/job/base.rb
para-0.7.3.p2 lib/para/job/base.rb
para-0.7.3.p1 lib/para/job/base.rb
para-0.7.3 lib/para/job/base.rb
para-0.7.2 lib/para/job/base.rb
para-0.7.1 lib/para/job/base.rb
para-0.7.0 lib/para/job/base.rb
para-0.6.9 lib/para/job/base.rb
para-0.6.8 lib/para/job/base.rb
para-0.6.7 lib/para/job/base.rb