Spec-Zone.ru › Ruby on Rails 7.1

класс ActiveJob::Base

Родитель:
Объект
Включенные модули:
ActiveJob::Core, ActiveJob::QueueAdapter, ActiveJob::QueueName, ActiveJob::QueuePriority, ActiveJob::Enqueuing, ActiveJob::Execution, ActiveJob::Callbacks, ActiveJob::Exceptions

Базовый класс Active Job

Объекты Active Job могут быть настроены для работы с различными фреймворками очереди задач. Чтобы указать адаптер очереди, который нужно использовать:

ActiveJob::Base.queue_adapter = :inline

Список поддерживаемых адаптеров можно найти в QueueAdapters.

Объекты Active Job могут быть определены путем создания класса, который наследуется от класса ActiveJob::Base. Единственный необходимый метод для реализации — метод «perform».

Чтобы определить объект Active Job:

class ProcessPhotoJob < ActiveJob::Base
  def perform(photo)
    photo.watermark!('Rails')
    photo.rotate!(90.degrees)
    photo.resize_to_fit!(300, 300)
    photo.upload!
  end
end

Записи, которые передаются, сериализуются/десериализуются с помощью глобального идентификатора. Дополнительную информацию можно найти в Arguments.

Чтобы добавить задачу в очередь для выполнения, как только система очереди освободится:

ProcessPhotoJob.perform_later(photo)

Чтобы добавить задачу в очередь для обработки в какой-то момент в будущем:

ProcessPhotoJob.set(wait_until: Date.tomorrow.noon).perform_later(photo)

Дополнительную информацию можно найти в ActiveJob::Core::ClassMethods#set

Задача также может быть обработана немедленно, без отправки в очередь:

ProcessPhotoJob.perform_now(photo)

Exceptions

  • DeserializationError - Класс ошибок десериализации.

  • SerializationError - Класс ошибок сериализации.

© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API