module RocketJob::Batch::Throttle::ClassMethods

Public Instance Methods

batch_throttle?(method_name) click to toggle source

Has a throttle been defined?

# File lib/rocket_job/batch/throttle.rb, line 66
def batch_throttle?(method_name)
  rocket_job_batch_throttles.exist?(method_name)
end
define_batch_throttle(method_name, filter: :throttle_filter_class) click to toggle source

Add a new throttle.

Parameters:

method_name: [Symbol]
  Name of method to call to evaluate whether a throttle has been exceeded.
  Note: Must return true or false.
filter: [Symbol|Proc]
  Name of method to call to return the filter when the throttle has been exceeded.
  Or, a block that will return the filter.
  Default: :throttle_filter_class (Throttle all jobs of this class)

Note: Throttles are executed in the order they are defined.

# File lib/rocket_job/batch/throttle.rb, line 49
def define_batch_throttle(method_name, filter: :throttle_filter_class)
  # Duplicate to prevent modifying parent class throttles
  definitions = rocket_job_batch_throttles ? rocket_job_batch_throttles.dup : ThrottleDefinitions.new
  definitions.add(method_name, filter)
  self.rocket_job_batch_throttles = definitions
end
undefine_batch_throttle(method_name) click to toggle source

Undefine a previously defined throttle

# File lib/rocket_job/batch/throttle.rb, line 57
def undefine_batch_throttle(method_name)
  return unless rocket_job_batch_throttles

  definitions = rocket_job_batch_throttles.dup
  definitions.remove(method_name)
  self.rocket_job_batch_throttles = definitions
end