Class: RailsAnalyzer::RecordInserter

Inherits:
Base::RecordInserter show all
Defined in:
lib/rails_analyzer/record_inserter.rb

Overview

Set of functions that can be used to easily log requests into a SQLite3 Database.

Instance Attribute Summary

Attributes inherited from Base::RecordInserter

#current_request, #database, #warning_count

Instance Method Summary collapse

Methods inherited from Base::RecordInserter

#calculate_db_durations!, #count, #initialize, #insert_batch, insert_batch_into, #insert_warning

Constructor Details

This class inherits a constructor from Base::RecordInserter

Instance Method Details

#insert(request, close_statements = false) ⇒ Object

Insert a request into the database. request The request to insert. close_statements Close prepared statements (default false)



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/rails_analyzer/record_inserter.rb', line 12

def insert(request, close_statements = false)
  unless @insert_statements
    prepare_statements! 
    close_statements = true
  end
    
  if request[:type] && @insert_statements.has_key?(request[:type]) 
    if request[:type] == :started
      insert_warning(request[:line], "Unclosed request encountered on line #{request[:line]} (request started on line #{@current_request})") unless @current_request.nil?
      @current_request = request[:line]
    elsif [:failed, :completed].include?(request[:type])
      @current_request = nil
    end
    
    begin
      @insert_statements[request.delete(:type)].execute(request) 
    rescue SQLite3::Exception => e
      insert_warning(request[:line], "Could not save log line to database: " + e.message.to_s)
    end        
  else
    insert_warning(request[:line], "Ignored unknown statement type")
  end
  
  close_prepared_statements! if close_statements
end