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)


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

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

.evaluate_condition(receiver, condition, arguments) ⇒ Object

Raises:

  • (ArgumentError)


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

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



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

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

  arguments + [keyword_arguments]
end