class Bellbro::Service
Attributes
jid[R]
thread[R]
thread_error[R]
Public Class Methods
get_worker_class()
click to toggle source
# File lib/bellbro/service.rb, line 23 def self.get_worker_class @worker_class end
mutex()
click to toggle source
# File lib/bellbro/service.rb, line 90 def self.mutex $mutex ||= Mutex.new end
new()
click to toggle source
# File lib/bellbro/service.rb, line 30 def initialize @done = false @jid = Digest::MD5.hexdigest(Time.now.utc.to_s + Thread.current.object_id.to_s) end
poll_interval(arg)
click to toggle source
# File lib/bellbro/service.rb, line 11 def self.poll_interval(arg) if defined?(Rails) && Rails.env.test? @sleep_interval = 0.5 else @sleep_interval = arg end end
sleep_interval()
click to toggle source
# File lib/bellbro/service.rb, line 94 def self.sleep_interval @sleep_interval end
worker_class(arg)
click to toggle source
# File lib/bellbro/service.rb, line 19 def self.worker_class(arg) @worker_class = arg end
Public Instance Methods
each_job()
click to toggle source
# File lib/bellbro/service.rb, line 77 def each_job # Override [] end
run()
click to toggle source
# File lib/bellbro/service.rb, line 54 def run Rails.logger.info "Starting #{self.class} service." self.class.mutex.synchronize { track } begin self.class.mutex.synchronize { start_jobs } self.class.mutex.synchronize { status_update } sleep end until @done self.class.mutex.synchronize { stop_tracking } end
running?()
click to toggle source
# File lib/bellbro/service.rb, line 82 def running? !@done end
sleep()
click to toggle source
Calls superclass method
# File lib/bellbro/service.rb, line 73 def sleep super(self.class.sleep_interval) end
start()
click to toggle source
# File lib/bellbro/service.rb, line 35 def start @thread = Thread.new do begin run #rescue Exception => @thread_error # Rails.logger.info "#{@thread_error.inspect}", type: :error # Airbrake.notify(@thread_error) # raise @thread_error end end end
start_jobs()
click to toggle source
# File lib/bellbro/service.rb, line 65 def start_jobs each_job do |job| jid = worker_class.perform_async(job) Rails.logger.info "Starting job #{jid} #{worker_class.name} with #{job.inspect}." record_incr(:jobs_started) end end
stop()
click to toggle source
# File lib/bellbro/service.rb, line 47 def stop @done = true Rails.logger.info "Stopping #{self.class} service..." @thread.join Rails.logger.info "#{self.class.to_s.capitalize} service stopped." end
worker_class()
click to toggle source
# File lib/bellbro/service.rb, line 86 def worker_class @worker_class ||= self.class.get_worker_class end