class Xi::ErrorLog
Attributes
max_msgs[RW]
more_errors[R]
more_errors?[R]
Public Class Methods
new(max_msgs: 6)
click to toggle source
# File lib/xi/error_log.rb, line 12 def initialize(max_msgs: 6) @max_msgs = max_msgs @mutex = Mutex.new @errors = [] @more_errors = false end
Public Instance Methods
<<(msg)
click to toggle source
# File lib/xi/error_log.rb, line 20 def <<(msg) @mutex.synchronize do @errors.unshift(msg) unless @errors.include?(msg) if @errors.size >= @max_msgs @errors.slice!(@max_msgs) @more_errors = true end end end
each() { |shift| ... }
click to toggle source
# File lib/xi/error_log.rb, line 30 def each return enum_for(:each) unless block_given? msgs = @mutex.synchronize do res = @errors.dup @errors.clear @more_errors = false res end while !msgs.empty? yield msgs.shift end end