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 = {}
@timezone = Time.zone&.name
end
Creates 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 136
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&.name
self.enqueued_at = job_data["enqueued_at"]
end
Attaches 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 94
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" => timezone,
"enqueued_at" => Time.now.utc.iso8601
}
end
Returns a hash with the job data that can safely be passed to the queuing adapter.
© 2004–2020 David Heinemeier Hansson
Licensed under the MIT License.