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.



84
85
86
87
# File 'lib/threasy/work.rb', line 84

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

Instance Method Details

#logObject



105
106
107
# File 'lib/threasy/work.rb', line 105

def log
  Threasy.logger
end

#workObject



89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# File 'lib/threasy/work.rb', line 89

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