包含工作初始化的 perform_later
方法。
方法
執行個體公開方法
perform_later(...) 連結
將工作推送到佇列上。預設參數必須為 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
來源: 顯示 | 在 GitHub 上
# 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, &_) 連結
來源: 顯示 | 在 GitHub 上
# 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