class Threasy::Work::Worker
Public Class Methods
new(work, id)
click to toggle source
# File lib/threasy/work.rb, line 89 def initialize(work, id) @work = work @id = id end
Public Instance Methods
log()
click to toggle source
# File lib/threasy/work.rb, line 114 def log Threasy.logger end
work()
click to toggle source
# File lib/threasy/work.rb, line 94 def work @thread = Thread.start do loop do if args = @work.grab job = args.shift log.debug "Worker ##{@id} has grabbed a job" begin job = eval(job) if job.kind_of?(String) job.respond_to?(:perform) ? job.perform(*args) : job.call(*args) rescue Exception => e log.error %|Worker ##{@id} error: #{e.message}\n#{e.backtrace.join("\n")}| end elsif @work.pool.size > @work.min_workers @work.sync { @work.pool.delete self } break end end end end