Class: RailsWayback::RenderTracker

Inherits:
Object
  • Object
show all
Defined in:
lib/rails_wayback/render_tracker.rb

Overview

Collects render events for one request. A tracker can be shared with child execution contexts while keeping mutation and closure atomic.

Instance Method Summary collapse

Constructor Details

#initialize ⇒ RenderTracker

Returns a new instance of RenderTracker.



7
8
9
10
11
# File 'lib/rails_wayback/render_tracker.rb', line 7

def initialize
  @entries = []
  @mutex = Mutex.new
  @closed = false
end

Instance Method Details

#close ⇒ Object



26
27
28
# File 'lib/rails_wayback/render_tracker.rb', line 26

def close
  @mutex.synchronize { @closed = true }
end

#closed? ⇒ Boolean

Returns:

  • (Boolean)


30
31
32
# File 'lib/rails_wayback/render_tracker.rb', line 30

def closed?
  @mutex.synchronize { @closed }
end

#entries ⇒ Object



22
23
24
# File 'lib/rails_wayback/render_tracker.rb', line 22

def entries
  @mutex.synchronize { @entries.dup }
end

#record(event:, identifier:) ⇒ Object



13
14
15
16
17
18
19
20
# File 'lib/rails_wayback/render_tracker.rb', line 13

def record(event:, identifier:)
  @mutex.synchronize do
    next false if @closed

    @entries << { event: event.to_s, identifier: identifier.to_s }.freeze
    true
  end
end