module Sidekiq::DeferredJobs::DeferBlock

Public Instance Methods

abort_deferred_jobs!(*filter) click to toggle source

Abort any already deferred Sidkiq workers in the current `defer_job` block. If a filter is specified, then only matching Sidekiq jobs will be aborted. @param *filter See defer_job for filter specification. @return [Array<Sidekiq::DeferredJobs::Job>] the jobs that were aborted

# File lib/sidekiq/deferred_jobs.rb, line 94
def abort_deferred_jobs!(*filter)
  jobs, _filters = Thread.current[:sidekiq_deferred_jobs_jobs]
  if jobs
    jobs.clear!(filter)
  else
    []
  end
end
defer_jobs(*filter, &block) click to toggle source

Defer enqueuing Sidekiq workers within the block until the end of the block. Any workers that normally would have been enqueued with a `perform_async` call will instead be queued up and run in an ensure clause at the end of the block. @param *filter [Module>, Hash, FalseClass] Optional filter on which workers should be deferred.

If a filter is specified, only matching workers will be deferred. To match the
filter, the worker must either be the class specfied or include the module or
have sidekiq_options that match the specified hash. If the filter is `false`
then job deferral will be disabled entirely within the block.

@return [void]

# File lib/sidekiq/deferred_jobs.rb, line 82
def defer_jobs(*filter, &block)
  if filter.size == 1 && filter.first == false
    Sidekiq::DeferredJobs.undeferred(&block)
  else
    Sidekiq::DeferredJobs.defer(filter, &block)
  end
end
enqueue_deferred_jobs!(*filter) click to toggle source

Immediately enqueue any already deferred Sidkiq workers in the current `defer_job` block. If a filter is specified, then only matching Sidekiq jobs will be enqueued. @param *filter See defer_job for filter specification. @return [void]

# File lib/sidekiq/deferred_jobs.rb, line 107
def enqueue_deferred_jobs!(*filter)
  jobs, _filters = Thread.current[:sidekiq_deferred_jobs_jobs]
  if jobs
    Sidekiq::DeferredJobs.undeferred { jobs.enqueue!(filter) }
  end
  nil
end