Как отформатировать и получить стек вызовов Ruby

Чтобы получить отформатированный стек вызовов Ruby, вы можете использовать метод Kernel#caller. Этот метод возвращает массив, содержащий трассировку текущего стека выполнения.

Вот пример того, как можно получить и отформатировать стек вызовов Ruby:

def format_call_stack
  caller.map.with_index do |call, index|
    "##{index + 1} #{call}"
  end.join("\n")
end
puts format_call_stack

В этом примере метод format_call_stackиспользует метод callerдля получения стека вызовов. Затем он перебирает каждый вызов, используя map.with_index, чтобы добавить номер строки и символ решетки перед каждым вызовом. Наконец, он объединяет форматированные вызовы с символами новой строки и печатает результат.

Это выведет что-то вроде:

#1 test.rb:3:in `format_call_stack'
#2 test.rb:8:in `<main>'