RCR 255: Add trace info to Kernel#p
Submitted by batkins (Fri May 21 19:05:42 UTC 2004)
Abstract
Many Ruby programmers use Kernel#p to examine an object's state for debugging purposes. However, p's output does not indicate the file and line from with p was called.
Problem
Since Kernel#p doesn't tell the user where it was executed in the file, it is slightly less useful for debugging. If Kernel#p supplied this information, then users of tools like SciTE could quickly jump to the location of output from Kernel#p.
Proposal
Have Kernel#p output file and line information similar to exception traces. So "p str" would yield:
file.rb:18:"this is in str"
Analysis
This could cause problems with older scripts that don't expect this to happen. For this reason, it might make sense to enable tracing only if $debug == true
Implementation
module Kernel
def p *o
prefix = caller[0].split(/:/).values_at(0, 1).join(":") + ":"
# do whatever p does here, but prepend
# variable prefix to the output
end
end
|
Strongly opposed |
0 |
Opposed |
6 |
Neutral |
0 |
In favor |
1 |
Strongly advocate |
0 |
|
RCRchive copyright © David Alan Black, 2003-2005.
Powered by .