On Mar 6, 2004, at 13:29, Sam Roberts wrote:

> I want a version of "pp" that prints the file/line, so I tried this:
>
> def debug(*objs)
>   print __FILE__, ':', __LINE__, ':'
>   pp(*objs)
> end

Have a look at Kernel#caller

dave[Downloads/emacs 13:46:32] ri caller
---------------------------------------------------------- Kernel#caller
      caller(start=1)    => array
------------------------------------------------------------------------
      Returns the current execution stack---an array containing strings
      in the form ``file:line'' or ``file:line: in `method'''. The
      optional start parameter determines the number of initial stack
      entries to omit from the result.

         def a(skip)
           caller(skip)
         end
         def b(skip)
           a(skip)
         end
         def c(skip)
           b(skip)
         end
         c(0)   #=> ["prog:2:in `a'", "prog:5:in `b'", "prog:8:in `c'", 
"prog:10"]
         c(1)   #=> ["prog:5:in `b'", "prog:8:in `c'", "prog:11"]
         c(2)   #=> ["prog:8:in `c'", "prog:12"]
         c(3)   #=> ["prog:13"]



Cheers

Dave