Module: RailsMemoryProfiler::ReportStore

Defined in:
lib/rails_memory_profiler/report_store.rb

Class Method Summary collapse

Class Method Details

.allObject



17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/rails_memory_profiler/report_store.rb', line 17

def all
  mutex.synchronize do
    stored = @stored || 0
    return [] if stored.zero?

    if stored < capacity
      buffer.first(stored)
    else
      buffer[@write_pos..] + buffer[0...@write_pos]
    end
  end
end

.clearObject



30
31
32
# File 'lib/rails_memory_profiler/report_store.rb', line 30

def clear
  mutex.synchronize { reset! }
end

.find(id) ⇒ Object



13
14
15
# File 'lib/rails_memory_profiler/report_store.rb', line 13

def find(id)
  all.find { |r| r[:id] == id }
end

.push(report) ⇒ Object



4
5
6
7
8
9
10
11
# File 'lib/rails_memory_profiler/report_store.rb', line 4

def push(report)
  mutex.synchronize do
    ensure_buffer_size
    buffer[@write_pos] = report.merge(id: SecureRandom.hex(6))
    @write_pos = (@write_pos + 1) % capacity
    @stored    = [@stored + 1, capacity].min
  end
end

.sizeObject



34
35
36
# File 'lib/rails_memory_profiler/report_store.rb', line 34

def size
  mutex.synchronize { @stored || 0 }
end