Project

General

Profile

Feature #17177

Updated by sawa (Tsuyoshi Sawada) over 3 years ago

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: 

 ```ruby 
 ... 
 # 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 passes as arguments, but also its source location. Supposing we have a file `bar.rb` like this, 

 ```rb 
 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: 


 ```ruby 
 ... 
 # some buggy area or conditional branch 
 p foo 
 ... 
 # another buggy area or conditional branch 
 p foo 
 ... 
 # another buggy area or conditional branch 
 p bar 
 ... 
 ``` 

Back