Class: CloseYourIt::BreadcrumbBuffer

Inherits:
Object
  • Object
show all
Defined in:
lib/closeyourit/breadcrumb_buffer.rb

Overview

Ring buffer limitato di breadcrumb. Vive nello Scope (un buffer per execution-context), scritto solo dal thread proprietario → niente mutex. Oltre ‘max_size` droppa il più vecchio.

Instance Method Summary collapse

Constructor Details

#initialize(max_size) ⇒ BreadcrumbBuffer

Returns a new instance of BreadcrumbBuffer.



7
8
9
10
# File 'lib/closeyourit/breadcrumb_buffer.rb', line 7

def initialize(max_size)
  @max_size = max_size.to_i
  @items = []
end

Instance Method Details

#add(breadcrumb) ⇒ Object



12
13
14
15
16
17
18
# File 'lib/closeyourit/breadcrumb_buffer.rb', line 12

def add(breadcrumb)
  return self unless @max_size.positive?

  @items.shift while @items.size >= @max_size
  @items << breadcrumb
  self
end

#empty?Boolean

Returns:

  • (Boolean)


24
25
26
# File 'lib/closeyourit/breadcrumb_buffer.rb', line 24

def empty?
  @items.empty?
end

#sizeObject



28
29
30
# File 'lib/closeyourit/breadcrumb_buffer.rb', line 28

def size
  @items.size
end

#to_aObject



20
21
22
# File 'lib/closeyourit/breadcrumb_buffer.rb', line 20

def to_a
  @items.map(&:to_h)
end