class QueuedLogger
Public Class Methods
new(*args)
click to toggle source
Calls superclass method
# File lib/queued_logger.rb, line 4 def initialize(*args) super(*args) @queue = [] @emitted = false end
Public Instance Methods
dequeue(level=nil, message=nil)
click to toggle source
# File lib/queued_logger.rb, line 27 def dequeue(level=nil, message=nil) if queued? @queue.clear elsif level and message send("%s_without_queue"%level, message) if @emitted end @emitted = false end
enqueue(level, message)
click to toggle source
# File lib/queued_logger.rb, line 22 def enqueue(level, message) @queue << [level, message] @emitted = false end
process_queue()
click to toggle source
# File lib/queued_logger.rb, line 10 def process_queue if queued? while true entry = @queue.shift or break severity, message = entry raw_method = "#{severity}_without_queue" severity_i = self.class.send(:const_get, severity.to_s.upcase) send(raw_method, message) end end end
queued?()
click to toggle source
# File lib/queued_logger.rb, line 36 def queued? ! @queue.empty? end