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 = {} 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 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"] 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 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 } end
Returns 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.