包含用于作业初始化的 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
中提供参数,如果排队不成功则返回 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