| Class | DBI::HandleTracer |
| In: |
lib/dbi/trace.rb
|
| Parent: | AspectR::Aspect |
# File lib/dbi/trace.rb, line 31
31: def initialize(klass)
32: @never_wrap = /^__|^send$|^id$|^class$|^$ /
33: self.wrap(klass, :pre, :post, methods(klass))
34: end
# File lib/dbi/trace.rb, line 49
49: def post(method, object, exitstatus, *args)
50:
51: case object.trace_mode
52: when 1, 2 # return values and errors
53: arrow = object.trace_mode == 1 ? "<=" : "<-"
54: if exitstatus.kind_of? Array
55: object.trace_output << "#{arrow} #{method} for #{object} = #{exitstatus[0] || 'nil'}\n"
56: else
57: if exitstatus == true
58: object.trace_output << "!! #{$!.message.chomp}\n"
59: end
60: object.trace_output << "#{arrow} #{method} for #{object}\n"
61: end
62:
63: when 3
64: if exitstatus.kind_of? Array
65: object.trace_output << "<- #{method} for #{object.inspect} = #{exitstatus[0].inspect}\n"
66: else
67: if exitstatus == true
68: object.trace_output << "!! #{$!.inspect}\n"
69: end
70: object.trace_output << "<- #{method} for #{object.inspect}\n"
71: end
72: end
73:
74: end
trace methods —————————————————————
# File lib/dbi/trace.rb, line 38
38: def pre(method, object, exitstatus, *args)
39:
40: par = args.collect{|a| a.inspect}.join(", ")
41:
42: if object.trace_mode == 2 then
43: object.trace_output << "-> #{method} for #{object} (#{par})\n"
44: elsif object.trace_mode == 3 then
45: object.trace_output << "-> #{method} for #{object.inspect} (#{par})\n"
46: end
47: end