包含用于作业初始化的 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