class Resugan::Worker::Monitor
Public Class Methods
new(namespace = '')
click to toggle source
# File lib/resugan/worker.rb, line 15 def initialize(namespace = '') @namespace = namespace @config = Config.new @queue = ParallelQueue.new(redis, 'resugan_queue-' + namespace) end
Public Instance Methods
configure(&block)
click to toggle source
# File lib/resugan/worker.rb, line 21 def configure(&block) block.call(@config) self end
redis=(redis)
click to toggle source
# File lib/resugan/worker.rb, line 35 def redis=(redis) @redis = redis end
reset_queue()
click to toggle source
# File lib/resugan/worker.rb, line 39 def reset_queue @queue.delete_all! end
start()
click to toggle source
# File lib/resugan/worker.rb, line 26 def start puts "monitoring resugan queue: #{@namespace}" ::Kernel.loop do eval_queue sleep 1 if @queue.queue_count == 0 end end
Protected Instance Methods
redis()
click to toggle source
# File lib/resugan/worker.rb, line 45 def redis @redis ||= Redis.new end
Private Instance Methods
eval_queue()
click to toggle source
# File lib/resugan/worker.rb, line 51 def eval_queue @queue.dequeue_each do |item| unmarshalled_event = JSON.parse(item) event = unmarshalled_event["event"] args = unmarshalled_event["args"] begin Resugan::Kernel.invoke(@namespace, event, args) rescue StandardError => exception if @config.error_handler @config.error_handler.call(@namespace, event, args, exception) end end end end