Sha256: 05c3cdb594dc2fc79e10fb3f5a11b78c5326ce3d463205b2a1f0e1d18f511116

Contents?: true

Size: 1.73 KB

Versions: 24

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_enqueue :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

24 entries across 24 versions & 1 rubygems

Version Path
para-0.12.5 lib/para/job/base.rb
para-0.12.4 lib/para/job/base.rb
para-0.12.3 lib/para/job/base.rb
para-0.12.2 lib/para/job/base.rb
para-0.12.1 lib/para/job/base.rb
para-0.12.0 lib/para/job/base.rb
para-0.11.4 lib/para/job/base.rb
para-0.11.3 lib/para/job/base.rb
para-0.11.2 lib/para/job/base.rb
para-0.11.1 lib/para/job/base.rb
para-0.11.0 lib/para/job/base.rb
para-0.10.0 lib/para/job/base.rb
para-0.9.4 lib/para/job/base.rb
para-0.9.3.3 lib/para/job/base.rb
para-0.9.3.2 lib/para/job/base.rb
para-0.9.3.1 lib/para/job/base.rb
para-0.9.2 lib/para/job/base.rb
para-0.9.0 lib/para/job/base.rb
para-0.8.15 lib/para/job/base.rb
para-0.8.14 lib/para/job/base.rb