Когда я пытаюсь извлечь позицию метода в исходном коде, я могу сделать:
class Object
def source_position
puts caller.first
end
end
, поэтому, когда я использую его в цепочке, расположенной в n-й строке исходного кода, он дает мне желаемый результат:
test.rb
.
.
n: 'abcde'.source_position
.
.
# => test.rb:n:in `<main>`
но когда я делаю разрыв строки перед этой командой, она возвращает позицию начала цепочки вместо позиции рассматриваемого метода:
.
.
n: 'abcde'.
n+1: source_position
.
.
# => test.rb:n:in `<main>`
или (в рубине 1.9),
.
.
n: 'abcde'
n+1: .source_position
.
.
# => test.rb:n:in `<main>`
Это функция, а не ошибка? Если так, есть ли способ получить позицию метода, чтобы в последних двух примерах выше, n+1
будет возвращено в виде строки вместо n
?