модуль ActiveJob::Core
Предоставляет общее поведение, которое будет включено в каждый объект Active Job, унаследованный от ActiveJob::Base.
Атрибуты
Аргументы задания
Отслеживание времени добавления задания в очередь
Hash, содержащий количество раз, когда это задание обрабатывало ошибки для каждого конкретного объявления retry_on. Ключи — строковое представление исключений, перечисленных в объявлении retry_on, а соответствующее значение — количество выполнений, где соответствующее объявление retry_on обрабатывало одно из перечисленных исключений.
Количество раз, когда это задание выполнялось (увеличивается при каждой повторной попытке, например, после исключения).
Идентификатор задания
I18n.locale, используемый во время выполнения задания.
Приоритет задания (меньшее значение — более высокий приоритет).
Идентификатор, необязательно предоставленный адаптером
Очередь, в которой будет находиться задание.
Отметка времени, когда задание должно быть выполнено
Временная зона, используемая во время выполнения задания.
Методы публичного класса
# 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 Создаёт новый экземпляр задания. Принимает аргументы, которые будут переданы методу perform.
Методы публичного экземпляра
# 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
Прикрепляет сохранённые данные задания к текущему экземпляру. Получает хэш, возвращённый из serialize
Примеры
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 Возвращает хэш с данными задания, которые можно безопасно передать адаптеру очереди.
© 2004–2020 David Heinemeier Hansson
Licensed under the MIT License.