caller(skip = 1)
retorna un array de cadenas con el formato
“file:line” o “file:line: in `method”‘El parámetro opcional indica el número de pilas iniciales a saltarse.
Retorna nil
si el numero de las que te saltas es mayor que el
número de llamadas en la pila.
Ejemplo:
~/rubytesting/programmingRuby/src_of_programming_ruby_by_dave_thomas$ cat -n ex0683.rb 1 def cat_a 2 puts caller.join("\n") 3 end 4 def cat_b 5 cat_a 6 end 7 def cat_c 8 cat_b 9 end 10 cat_c
~/rubytesting/programmingRuby/src_of_programming_ruby_by_dave_thomas$ ruby ex0683.rb ex0683.rb:5:in `cat_b' ex0683.rb:8:in `cat_c' ex0683.rb:10
Veamos un ejemplo mas completo:
~/rubytesting/programmingRuby/src_of_programming_ruby_by_dave_thomas$ cat -n caller.rb 1 def a(skip) 2 caller(skip) 3 end 4 def b(skip) 5 a(skip) 6 end 7 def c(skip) 8 b(skip) 9 end 10 puts c(0).inspect 11 puts c(1).inspect 12 puts c(2).inspect 13 puts c(3).inspect 14 puts c(4).inspect 15 puts c(5).inspect
~/rubytesting/programmingRuby/src_of_programming_ruby_by_dave_thomas$ ruby caller.rb ["caller.rb:2:in `a'", "caller.rb:5:in `b'", "caller.rb:8:in `c'", "caller.rb:10"] ["caller.rb:5:in `b'", "caller.rb:8:in `c'", "caller.rb:11"] ["caller.rb:8:in `c'", "caller.rb:12"] ["caller.rb:13"] [] nil