Feature #17177
closedInclude the current file name and the line number in the output of `p`
Description
In many debugging situations, we want to inspect some objects in more than one source location throughout the code. To be identified where it is called from, it is very common that the method p
is used together with a puts
method that outputs some marker that distinguishes the location:
... # some buggy area or conditional branch
puts "== A =="
p foo
... # another buggy area or conditional branch
puts "== B =="
p foo
... # another buggy area or conditional branch
puts "bar is:"
p bar
...
But this is cumbersome.
Also, after debugging, when we want to remove the p
calls from the code, it is sometimes not so trivial to identify where those method calls are written.
I propose that the method p
should display not only the objects passed as arguments, but also its source location. Supposing we have a file bar.rb
like this,
foo = "a"
p foo
running ruby bar.rb
should perhaps have an output like this:
At bar.rb:2
"a"
Then, in a debugging situation like the above, we would only need to write:
... # some buggy area or conditional branch
p foo
... # another buggy area or conditional branch
p foo
... # another buggy area or conditional branch
p bar
...
Updated by matz (Yukihiro Matsumoto) over 4 years ago
- Status changed from Open to Rejected
Rejected. I agree this behavior is convienient in some cases, but changing p
is too drastic and incompatible.
Please retry with another name.
Matz.
Updated by vo.x (Vit Ondruch) over 4 years ago
Updated by sawa (Tsuyoshi Sawada) over 4 years ago
If a new method is to be created for this purpose, then one possibility is to combine this with the idea that was once proposed by a Ruby committer to define a public method on Object
so that we can insert the method in or at the end of a method chain instead of using a function-style method (I cannot find the ticket.)
Updated by sawa (Tsuyoshi Sawada) over 4 years ago
What about the method name inform
?
Updated by nobu (Nobuyoshi Nakada) over 4 years ago
What about extending pp
to include the location when $DEBUG
is true?