Sha256: 111769e19e3b3365923539720bc4b92cb52526fb3df1be08ff7bc6a6f36a8478

Contents?: true

Size: 917 Bytes

Versions: 6

Compression:

Stored size: 917 Bytes

Contents

module Delayed
  class JobWrapper # rubocop:disable Betterment/ActiveJobPerformable
    attr_accessor :job_data

    delegate_missing_to :job

    def initialize(job_or_data)
      # During enqueue the job instance is passed in directly, saves us deserializing
      # it to find out how to queue the job.
      # During load from the db, we get a data hash passed in so deserialize lazily.
      if job_or_data.is_a?(ActiveJob::Base)
        @job = job_or_data
        @job_data = job_or_data.serialize
      else
        @job_data = job_or_data
      end
    end

    def display_name
      job_data['job_class']
    end

    def perform
      ActiveJob::Callbacks.run_callbacks(:execute) do
        job.perform_now
      end
    end

    def encode_with(coder)
      coder['job_data'] = @job_data
    end

    private

    def job
      @job ||= ActiveJob::Base.deserialize(job_data) if job_data
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
delayed-0.7.1 lib/delayed/job_wrapper.rb
delayed-0.7.0 lib/delayed/job_wrapper.rb
delayed-0.6.0 lib/delayed/job_wrapper.rb
delayed-0.5.5 lib/delayed/job_wrapper.rb
delayed-0.5.4 lib/delayed/job_wrapper.rb
delayed-0.5.3 lib/delayed/job_wrapper.rb