модуль ActiveJob::Enqueuing::ClassMethods
Включает метод perform_later для инициализации задания.
Открытые методы экземпляра
# File activejob/lib/active_job/enqueuing.rb, line 81 def perform_later(...) job = job_or_instantiate(...) enqueue_result = job.enqueue yield job if block_given? enqueue_result end
Добавляет задание в очередь. По умолчанию аргументы должны иметь один из следующих типов: String, Integer, Float, NilClass, TrueClass, FalseClass, BigDecimal, Symbol, Date, Time, DateTime, ActiveSupport::TimeWithZone, ActiveSupport::Duration, Hash, ActiveSupport::HashWithIndifferentAccess, Array, Range или экземплярами GlobalID::Identification, однако этот список можно расширить, добавив собственные сериализаторы.
Возвращает экземпляр класса задания с аргументами, помещённого в очередь и доступными через Job#arguments, или false, если добавить задание в очередь не удалось.
После попытки добавить задание в очередь оно будет передано в необязательный блок.
Если Active Job используется совместно с Active Record и метод perform_later вызван внутри транзакции Active Record, добавление задания в очередь неявно откладывается до завершения транзакции либо отменяется, если транзакция откатывается. В таком случае метод perform_later вернёт экземпляр задания, как если бы оно было успешно добавлено в очередь, но вернёт false, если обратный вызов помешал добавить задание в очередь.
Это поведение можно изменить для отдельного задания:
class NotificationJob < ApplicationJob self.enqueue_after_transaction_commit = false end
Закрытые методы экземпляра
# File activejob/lib/active_job/enqueuing.rb, line 91 def job_or_instantiate(*args, &) # :doc: args.first.is_a?(self) ? args.first : new(*args) end
© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.