class RooOnRails::Sidekiq::Settings

Constants

DEFAULT_QUEUE_LATENCY_VALUES

Public Class Methods

concurrency() click to toggle source
# File lib/roo_on_rails/sidekiq/settings.rb, line 22
def concurrency
  ENV.fetch('SIDEKIQ_THREADS', 25)
end
permitted_latency_values() click to toggle source
# File lib/roo_on_rails/sidekiq/settings.rb, line 26
def permitted_latency_values
  @permitted_latency_values ||= ENV.key?('SIDEKIQ_QUEUES') ? env_queue_latency_values.freeze : DEFAULT_QUEUE_LATENCY_VALUES
end
queues() click to toggle source
# File lib/roo_on_rails/sidekiq/settings.rb, line 18
def queues
  @queues ||= permitted_latency_values.sort_by(&:last).map(&:first).freeze
end

Private Class Methods

env_queue_latency_values() click to toggle source
# File lib/roo_on_rails/sidekiq/settings.rb, line 32
def env_queue_latency_values
  {}.tap do |hash|
    ENV['SIDEKIQ_QUEUES'].split(',').each do |entry|
      queue_entry = entry.strip
      if DEFAULT_QUEUE_LATENCY_VALUES.key?(queue_entry)
        queue_name = queue_entry
        hash[queue_name] = DEFAULT_QUEUE_LATENCY_VALUES[queue_entry]
      elsif queue_entry.match(/\Awithin\d+.+\z/)
        _, number, unit = queue_entry.partition(/\d+/)
        hash[queue_entry] = number.to_i.public_send(unit.strip).to_i
      elsif queue_entry.include?(':')
        queue_name, latency_info = queue_entry.split(':')
        _, number, unit = latency_info.partition(/\d+/)
        hash[queue_name] = number.to_i.public_send(unit.strip).to_i
      else
        hash[queue_entry] = nil
      end
    end
  end
end