Module: ActiveJob::Temporal::ConditionalEnqueue

Extended by:
ActiveSupport::Concern
Defined in:
lib/activejob/temporal/conditional_enqueue.rb

Overview

Adds conditional enqueue helpers to ActiveJob classes.

Class Method Summary collapse

Class Method Details

.condition_allows_enqueue?(receiver, condition, arguments) ⇒ Boolean

Returns:

  • (Boolean)


18
19
20
# File 'lib/activejob/temporal/conditional_enqueue.rb', line 18

def self.condition_allows_enqueue?(receiver, condition, arguments)
  !!evaluate_condition(receiver, condition, arguments)
end

.evaluate_condition(receiver, condition, arguments) ⇒ Object

Raises:

  • (ArgumentError)


22
23
24
25
26
27
# File 'lib/activejob/temporal/conditional_enqueue.rb', line 22

def self.evaluate_condition(receiver, condition, arguments)
  return receiver.public_send(condition, arguments) if condition.is_a?(Symbol) || condition.is_a?(String)
  return condition.call(arguments) if condition.respond_to?(:call)

  raise ArgumentError, "condition must be a Symbol, String, or respond to #call"
end

.job_arguments(arguments, keyword_arguments) ⇒ Object



12
13
14
15
16
# File 'lib/activejob/temporal/conditional_enqueue.rb', line 12

def self.job_arguments(arguments, keyword_arguments)
  return arguments if keyword_arguments.empty?

  arguments + [keyword_arguments]
end