gitlab-org--gitlab-foss/lib/gitlab/sidekiq_config.rb

54 lines
1.3 KiB
Ruby
Raw Normal View History

# frozen_string_literal: true
require 'yaml'
module Gitlab
module SidekiqConfig
class << self
include Gitlab::SidekiqConfig::CliMethods
2018-11-19 21:29:19 +00:00
def redis_queues
# Not memoized, because this can change during the life of the application
Sidekiq::Queue.all.map(&:name)
2018-11-19 21:29:19 +00:00
end
2017-11-28 16:16:50 +00:00
def config_queues
@config_queues ||= begin
config = YAML.load_file(Rails.root.join('config/sidekiq_queues.yml'))
config[:queues].map(&:first)
end
2017-11-28 16:16:50 +00:00
end
def cron_workers
@cron_workers ||= Settings.cron_jobs.map { |job_name, options| options['job_class'].constantize }
end
2017-11-28 16:16:50 +00:00
def workers
@workers ||= begin
result = find_workers(Rails.root.join('app', 'workers'))
result.concat(find_workers(Rails.root.join('ee', 'app', 'workers'))) if Gitlab.ee?
result
end
end
private
def find_workers(root)
concerns = root.join('concerns').to_s
workers = Dir[root.join('**', '*.rb')]
.reject { |path| path.start_with?(concerns) }
workers.map! do |path|
ns = Pathname.new(path).relative_path_from(root).to_s.gsub('.rb', '')
ns.camelize.constantize
end
# Skip things that aren't workers
workers.select { |w| w < Sidekiq::Worker }
end
end
end
end