Module: RocketJob::Plugins::Job::Throttle::ClassMethods
- Defined in:
- lib/rocket_job/plugins/job/throttle.rb
Instance Method Summary collapse
-
#define_throttle(method_name, filter: :throttle_filter_class, description: nil) ⇒ Object
Add a new throttle.
-
#throttle?(method_name) ⇒ Boolean
Has a throttle been defined?.
-
#undefine_throttle(method_name) ⇒ Object
Undefine a previously defined throttle.
Instance Method Details
#define_throttle(method_name, filter: :throttle_filter_class, description: nil) ⇒ Object
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)
description: [String|Proc]
Human readable reason why the job is throttled, persisted to `throttled_by`
and shown in Mission Control. A Proc is called with the job and must
return a String. Default: a humanized version of the method name.
Note: Throttles are executed in the order they are defined.
61 62 63 64 65 66 |
# File 'lib/rocket_job/plugins/job/throttle.rb', line 61 def define_throttle(method_name, filter: :throttle_filter_class, description: nil) # Duplicate to prevent modifying parent class throttles definitions = rocket_job_throttles ? rocket_job_throttles.deep_dup : ThrottleDefinitions.new definitions.add(method_name, filter, description) self.rocket_job_throttles = definitions end |
#throttle?(method_name) ⇒ Boolean
Has a throttle been defined?
78 79 80 |
# File 'lib/rocket_job/plugins/job/throttle.rb', line 78 def throttle?(method_name) rocket_job_throttles&.exist?(method_name) end |
#undefine_throttle(method_name) ⇒ Object
Undefine a previously defined throttle
69 70 71 72 73 74 75 |
# File 'lib/rocket_job/plugins/job/throttle.rb', line 69 def undefine_throttle(method_name) return unless rocket_job_throttles definitions = rocket_job_throttles.deep_dup definitions.remove(method_name) self.rocket_job_throttles = definitions end |