Class: AppMap::Handler::Rails::SQLHandler

Inherits:
Object
  • Object
show all
Defined in:
lib/appmap/handler/rails/sql_handler.rb

Defined Under Namespace

Modules: SQLExaminer Classes: SQLCall, SQLReturn

Instance Method Summary collapse

Instance Method Details

#call(_, started, finished, _, payload) ⇒ Object

(name, started, finished, unique_id, payload)



144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
# File 'lib/appmap/handler/rails/sql_handler.rb', line 144

def call(_, started, finished, _, payload) # (name, started, finished, unique_id, payload)
  return if AppMap.tracing.empty?

  return if Thread.current[AppMap::Hook::Method::HOOK_DISABLE_KEY] == true

  reentry_key = "#{self.class.name}#call"
  return if Thread.current[reentry_key] == true

  after_start_time = AppMap::Util.gettime()

  Thread.current[reentry_key] = true
  begin
    sql = payload[:sql].strip

    SQLExaminer.examine payload, sql: sql

    call = SQLCall.new(payload)
    AppMap.tracing.record_event(call)
    sql_return_event = SQLReturn.new(call.id, finished - started)
    sql_return_event.elapsed_instrumentation = AppMap::Util.gettime() - after_start_time
    AppMap.tracing.record_event(sql_return_event)
  ensure
    Thread.current[reentry_key] = nil
  end
end