略過至內容 略過至搜尋

包含工作初始化的 perform_later 方法。

方法
J
P

執行個體公開方法

perform_later(...)

將工作推送到佇列上。預設參數必須為 StringIntegerFloatNilClassTrueClassFalseClassBigDecimalSymbolDateTimeDateTimeActiveSupport::TimeWithZoneActiveSupport::DurationHashActiveSupport::HashWithIndifferentAccessArrayRange,或 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 81
def perform_later(...)
  job = job_or_instantiate(...)
  enqueue_result = job.enqueue

  yield job if block_given?

  enqueue_result
end

執行個體私有方法

job_or_instantiate(*args, &_)

# 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