Sha256: 9a88935653e554d851837b3b1727dc58b5c1aa345c21f3145bbf2c18f94db91e

Contents?: true

Size: 934 Bytes

Versions: 1

Compression:

Stored size: 934 Bytes

Contents

# In Rails 4.2, ActiveJob externally applies deserialized job ID, queue name, arguments to
# the instantiated job in `ActiveJob::Base.deserialize`, which cannot be overridden in
# subclasses. https://github.com/rails/rails/pull/18260 changes this to delegate as much
# of the deserialization as possible to the instance, i.e. `ActiveJob::Base#deserialize`,
# which can be overridden. This allows us to store extra information in the queue (i.e.
# retry_attempt), which is essential for ActiveJob::Retry.

raise "Unnecessary monkey patch!" if ActiveJob::Base.method_defined?(:deserialize)

class ActiveJob::Base
  def self.deserialize(job_data)
    job = job_data['job_class'].constantize.new
    job.deserialize(job_data)
    job
  end

  def deserialize(job_data)
    self.job_id               = job_data['job_id']
    self.queue_name           = job_data['queue_name']
    self.serialized_arguments = job_data['arguments']
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
activejob-retry-0.0.1 lib/active_job/retry/deserialize_monkey_patch.rb