Class: Threasy::Work::Worker

Inherits:
Object
  • Object
show all
Defined in:
lib/threasy/work.rb

Instance Method Summary collapse

Constructor Details

#initialize(work, id) ⇒ Worker

Returns a new instance of Worker.



58
59
60
61
# File 'lib/threasy/work.rb', line 58

def initialize(work, id)
  @work = work
  @id = id
end

Instance Method Details

#logObject



79
80
81
# File 'lib/threasy/work.rb', line 79

def log
  Threasy.logger
end

#workObject



63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/threasy/work.rb', line 63

def work
  Thread.start do
    while job = @work.grab
      log.debug "Worker ##{@id} has grabbed a job"
      begin
        job = eval(job) if job.kind_of?(String)
        job.respond_to?(:perform) ? job.perform : job.call
      rescue Exception => e
        log.error %|Worker ##{@id} error: #{e.message}\n#{e.backtrace.join("\n")}|
      end
    end
    log.debug "Worker ##{@id} removing self from pool"
    @work.sync{ @work.pool.delete self }
  end
end