Method: Pgq::Worker#initialize

Defined in:
lib/pgq/worker.rb

#initialize(h) ⇒ Worker

Returns a new instance of Worker.



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/pgq/worker.rb', line 28

def initialize(h)
  @logger = h[:logger] || (defined?(Rails) && Rails.logger) || Logger.new(STDOUT)
  @consumers = []
  
  @queues = h[:queues]
  raise "Queue not selected" if @queues.blank?
  
  if @queues == ['all'] || @queues == 'all'
    if h[:queues_list]
      @queues = YAML.load_file(h[:queues_list])
    elsif defined?(Rails) && File.exists?(Rails.root + "config/queues_list.yml")
      @queues = YAML.load_file(Rails.root + "config/queues_list.yml")
    else
      raise "You shoud create config/queues_list.yml for all queues"
    end
  end
  
  @queues = @queues.split(',') if @queues.is_a?(String)
  
  @queues.each do |queue|
    klass = Pgq::Worker.predict_queue_class(queue)
    if klass
      @consumers << klass.new(@logger, queue)
    else
      raise "Unknown queue: #{queue}"
    end
  end

  @watch_file = h[:watch_file]
  @sleep_time = h[:sleep_time] || 0.5
end