Class: GraphQL::Tracing::DetailedTrace::MemoryBackend
- Inherits:
 - 
      Object
      
        
- Object
 - GraphQL::Tracing::DetailedTrace::MemoryBackend
 
 
- Defined in:
 - lib/graphql/tracing/detailed_trace/memory_backend.rb
 
Overview
An in-memory trace storage backend. Suitable for testing and development only. It won’t work for multi-process deployments and everything is erased when the app is restarted.
Instance Method Summary collapse
- 
  
    
      #delete_all_traces  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
 - 
  
    
      #delete_trace(id)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
 - 
  
    
      #find_trace(id)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
 - 
  
    
      #initialize(limit: nil)  ⇒ MemoryBackend 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    
A new instance of MemoryBackend.
 - 
  
    
      #save_trace(operation_name, duration, begin_ms, trace_data)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
 - 
  
    
      #traces(last:, before:)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
 
Constructor Details
#initialize(limit: nil) ⇒ MemoryBackend
Returns a new instance of MemoryBackend.
      9 10 11 12 13  | 
    
      # File 'lib/graphql/tracing/detailed_trace/memory_backend.rb', line 9 def initialize(limit: nil) @limit = limit @traces = {} @next_id = 0 end  | 
  
Instance Method Details
#delete_all_traces ⇒ Object
      36 37 38 39  | 
    
      # File 'lib/graphql/tracing/detailed_trace/memory_backend.rb', line 36 def delete_all_traces @traces.clear nil end  | 
  
#delete_trace(id) ⇒ Object
      31 32 33 34  | 
    
      # File 'lib/graphql/tracing/detailed_trace/memory_backend.rb', line 31 def delete_trace(id) @traces.delete(id.to_i) nil end  | 
  
#find_trace(id) ⇒ Object
      27 28 29  | 
    
      # File 'lib/graphql/tracing/detailed_trace/memory_backend.rb', line 27 def find_trace(id) @traces[id] end  | 
  
#save_trace(operation_name, duration, begin_ms, trace_data) ⇒ Object
      41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56  | 
    
      # File 'lib/graphql/tracing/detailed_trace/memory_backend.rb', line 41 def save_trace(operation_name, duration, begin_ms, trace_data) id = @next_id @next_id += 1 @traces[id] = DetailedTrace::StoredTrace.new( id: id, operation_name: operation_name, duration_ms: duration, begin_ms: begin_ms, trace_data: trace_data ) if @limit && @traces.size > @limit del_keys = @traces.keys[0...-@limit] del_keys.each { |k| @traces.delete(k) } end id end  | 
  
#traces(last:, before:) ⇒ Object
      15 16 17 18 19 20 21 22 23 24 25  | 
    
      # File 'lib/graphql/tracing/detailed_trace/memory_backend.rb', line 15 def traces(last:, before:) page = [] @traces.values.reverse_each do |trace| if page.size == last break elsif before.nil? || trace.begin_ms < before page << trace end end page end  |