Class: PLSQL::LogSubscriber

Inherits:
ActiveSupport::LogSubscriber
  • Object
show all
Defined in:
lib/plsql/log_subscriber.rb

Instance Method Summary collapse

Instance Method Details

#procedure_call(event) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/plsql/log_subscriber.rb', line 3

def procedure_call(event)
  return unless logger && (logger.debug? || uncaught_exception?(event.payload[:error]))
  payload = event.payload
  name = 'PL/SQL Procedure call (%.1fms)' % event.duration
  sql = payload[:sql].strip

  if payload[:arguments].empty?
    arguments = nil
  elsif payload[:arguments].size == 1 && Hash === payload[:arguments].first
    arguments = '  ' + payload[:arguments].first.inspect
  else
    arguments = '  ' + payload[:arguments].inspect
  end

  if event.payload[:error]
    exception = "Error occurred: %s\n%s" %
      [event.payload[:error].class, event.payload[:error].message.split("\n").map{|l| "  #{l}"}.join("\n")]

    name = color(name, RED, true)
    exception = color(exception, RED, true)
    sql = color(sql, nil, true)

    error "  #{name}  #{sql}#{arguments}\n  #{exception}"
  else
    name = color(name, YELLOW, true)
    sql = color(sql, nil, true)

    debug "  #{name}  #{sql}#{arguments}"
  end
end

#uncaught_exception?(error) ⇒ Boolean

Returns:

  • (Boolean)


34
35
36
# File 'lib/plsql/log_subscriber.rb', line 34

def uncaught_exception?(error)
  error && OCIError === error && !error.code.in?(20000..20999)
end