Module: SolidQueueGuard::QueueCoverage

Defined in:
lib/solid_queue_guard/queue_coverage.rb

Class Method Summary collapse

Class Method Details

.covers_all?(worker_queues, required_queue) ⇒ Boolean

Returns:

  • (Boolean)


14
15
16
17
18
# File 'lib/solid_queue_guard/queue_coverage.rb', line 14

def covers_all?(worker_queues, required_queue)
  return true if worker_queues.include?('*')

  worker_queues.include?(required_queue)
end

.parse_queues_option(value) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/solid_queue_guard/queue_coverage.rb', line 24

def parse_queues_option(value)
  case value
  when '*', nil
    ['*']
  when String
    value.split(',').map(&:strip).reject(&:empty?)
  when Array
    value.map(&:to_s)
  else
    []
  end
end

.uncovered_queues(required_queues, worker_queues) ⇒ Object



20
21
22
# File 'lib/solid_queue_guard/queue_coverage.rb', line 20

def uncovered_queues(required_queues, worker_queues)
  required_queues.reject { |queue_name| covers_all?(worker_queues, queue_name) }
end

.worker_queues_from_configuration(configuration = SolidQueue::Configuration.new) ⇒ Object



7
8
9
10
11
12
# File 'lib/solid_queue_guard/queue_coverage.rb', line 7

def worker_queues_from_configuration(configuration = SolidQueue::Configuration.new)
  configuration.configured_processes
               .select { |process| process.kind == :worker }
               .flat_map { |process| parse_queues_option(process.attributes[:queues]) }
               .uniq
end