Sha256: 229885ba9baef79f0b9c97854a00ccba68d231c0cc72cc202a2377e50c418f02

Contents?: true

Size: 763 Bytes

Versions: 13

Compression:

Stored size: 763 Bytes

Contents

# A proxy for managing jobs without having to load the corresponding
# job class.
#
# This is useful for managing jobs without having the job classes
# present in the code base.
class ActiveJob::JobProxy < ActiveJob::Base
  class UnsupportedError < StandardError; end

  attr_reader :job_class_name

  def initialize(job_data)
    super
    @job_class_name = job_data["job_class"]
    deserialize(job_data)
  end

  def serialize
    super.tap do |json|
      json["job_class"] = @job_class_name
    end
  end

  def perform_now
    raise UnsupportedError, "A JobProxy doesn't support immediate execution, only enqueuing."
  end

  ActiveJob::JobsRelation::STATUSES.each do |status|
    define_method "#{status}?" do
      self.status == status
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
mission_control-jobs-1.0.2 lib/active_job/job_proxy.rb
mission_control-jobs-1.0.1 lib/active_job/job_proxy.rb
mission_control-jobs-1.0.0 lib/active_job/job_proxy.rb
mission_control-jobs-0.6.0 lib/active_job/job_proxy.rb
mission_control-jobs-0.5.0 lib/active_job/job_proxy.rb
mission_control-jobs-0.4.0 lib/active_job/job_proxy.rb
mission_control-jobs-0.3.3 lib/active_job/job_proxy.rb
mission_control-jobs-0.3.2 lib/active_job/job_proxy.rb
mission_control-jobs-0.3.1 lib/active_job/job_proxy.rb
mission_control-jobs-0.3.0 lib/active_job/job_proxy.rb
mission_control-jobs-0.2.2 lib/active_job/job_proxy.rb
mission_control-jobs-0.2.1 lib/active_job/job_proxy.rb
mission_control-jobs-0.2.0 lib/active_job/job_proxy.rb