class Workerholic::Worker

handles job execution in threads

Attributes

alive[RW]
queue[RW]
thread[R]

Public Class Methods

new(queue=nil) click to toggle source
# File lib/workerholic/worker.rb, line 7
def initialize(queue=nil)
  @queue = queue
  @alive = true
  @logger = LogManager.new
end

Public Instance Methods

join() click to toggle source
# File lib/workerholic/worker.rb, line 29
def join
  thread.join if thread
end
kill() click to toggle source
# File lib/workerholic/worker.rb, line 25
def kill
  self.alive = false
end
work() click to toggle source
# File lib/workerholic/worker.rb, line 13
def work
  @thread = Thread.new do
    while alive
      serialized_job = poll
      JobProcessor.new(serialized_job).process if serialized_job
    end
  end
rescue ThreadError => e
  @logger.info(e.message)
  raise Interrupt
end

Private Instance Methods

poll() click to toggle source
# File lib/workerholic/worker.rb, line 35
def poll
  if queue
    queue.dequeue
  else
    sleep 0.1
    nil
  end
end