2016-01-11 3 views
0

Есть ли способ в Ruby, чтобы подсчитать, сколько раз вызывается метод? Я знаю, что caller.first дает имя файла, номер строки и имя метода вызывающего абонента, но не может найти никакой дополнительной информации.Есть ли способ подсчитать, сколько раз вызывается метод Ruby?

+1

Используйте 'TracePoint'. – sawa

ответ

4

Используйте TracePoint для запуска блока кода всякий раз, когда вызывается метод, затем фильтруйте на основе имени метода.

def foo() end 

count = 0 
name = :foo 

TracePoint.trace(:call) do |t| 
    count += 1 if t.method_id == name 
end 

count # => 0 
foo 
count # => 1 
foo 
count # => 2 

count здесь просто локальная переменная, которая накрыла в .trace блоке. Вы можете настроить это как константу, или переменную экземпляра, или что бы ни было лучше всего подходит для вашего случая использования.