модуль ActiveJob::Core
Предоставляет общее поведение, которое будет включено в каждый объект Active Job, унаследованный от ActiveJob::Base.
Атрибуты
Аргументы задания
Отслеживание момента добавления задания в очередь
Хэш, содержащий количество раз, когда данное задание обрабатывало ошибки для каждого конкретного объявления 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 = {}
end Создает новую инстанцию задания. Принимает аргументы, которые будут переданы методу perform.
Общедоступные методы экземпляра
# 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
Присоединяет сохраненные данные задания к текущей инстанции. Принимает хэш, возвращенный из 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 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 Возвращает хэш с данными задания, которые можно безопасно передать адаптеру очереди.
© 2004–2019 David Heinemeier Hansson
Licensed under the MIT License.