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