класс ActiveJob::Base
Active Job
Объекты Active Job могут быть настроены для работы с различными фреймворками back-end очередей. Для указания используемого адаптера очереди:
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
Передаваемые записи сериализуются/десериализуются с использованием глобального идентификатора. Дополнительную информацию можно найти в разделе Аргументы.
Для добавления задания в очередь, которое будет выполнено как только система очереди освободится:
ProcessPhotoJob.perform_later(photo)
Для добавления задания в очередь, которое будет обработано в какое-то будущее время:
ProcessPhotoJob.set(wait_until: Date.tomorrow.noon).perform_later(photo)
Дополнительную информацию можно найти в ActiveJob::Core::ClassMethods#set
Задание также может быть обработано немедленно без отправки в очередь:
ProcessPhotoJob.perform_now(photo)
Исключения
-
DeserializationError - класс ошибок десериализации.
-
SerializationError - класс ошибок сериализации.
© 2004–2018 David Heinemeier Hansson
Licensed under the MIT License.