On this page
module ActiveJob::Core
Provides general behavior that will be included into every Active Job object that inherits from ActiveJob::Base.
Attributes
Job arguments
Track when a job was enqueued
Hash that contains the number of times this job handled errors for each specific retry_on declaration. Keys are the string representation of the exceptions listed in the retry_on declaration, while its associated value holds the number of executions where the corresponding retry_on declaration handled one of its listed exceptions.
Number of times this job has been executed (which increments on every retry, like after an exception).
Job Identifier
I18n.locale to be used during the job.
Priority that the job will have (lower is more priority).
ID optionally provided by adapter
Queue in which the job will reside.
Timestamp when the job should be performed
Timezone to be used during the job.
Public Class Methods
# File activejob/lib/active_job/core.rb, line 81
def initialize(*arguments)
  @arguments  = arguments
  @job_id     = SecureRandom.uuid
  @queue_name = self.class.queue_name
  @priority   = self.class.priority
  @executions = 0
  @exception_executions = {}
endCreates a new job instance. Takes the arguments that will be passed to the perform method.
Public Instance Methods
# File activejob/lib/active_job/core.rb, line 134
def deserialize(job_data)
  self.job_id               = job_data["job_id"]
  self.provider_job_id      = job_data["provider_job_id"]
  self.queue_name           = job_data["queue_name"]
  self.priority             = job_data["priority"]
  self.serialized_arguments = job_data["arguments"]
  self.executions           = job_data["executions"]
  self.exception_executions = job_data["exception_executions"]
  self.locale               = job_data["locale"] || I18n.locale.to_s
  self.timezone             = job_data["timezone"] || Time.zone.try(:name)
  self.enqueued_at          = job_data["enqueued_at"]
endAttaches the stored job data to the current instance. Receives a hash returned from serialize
Examples
class DeliverWebhookJob < ActiveJob::Base
  attr_writer :attempt_number
  def attempt_number
    @attempt_number ||= 0
  end
  def serialize
    super.merge('attempt_number' => attempt_number + 1)
  end
  def deserialize(job_data)
    super
    self.attempt_number = job_data['attempt_number']
  end
  rescue_from(Timeout::Error) do |exception|
    raise exception if attempt_number > 5
    retry_job(wait: 10)
  end
end
# File activejob/lib/active_job/core.rb, line 92
def serialize
  {
    "job_class"  => self.class.name,
    "job_id"     => job_id,
    "provider_job_id" => provider_job_id,
    "queue_name" => queue_name,
    "priority"   => priority,
    "arguments"  => serialize_arguments_if_needed(arguments),
    "executions" => executions,
    "exception_executions" => exception_executions,
    "locale"     => I18n.locale.to_s,
    "timezone"   => Time.zone.try(:name),
    "enqueued_at" => Time.now.utc.iso8601
  }
endReturns a hash with the job data that can safely be passed to the queuing adapter.
© 2004–2019 David Heinemeier Hansson
Licensed under the MIT License.