2017-08-09 75 views
-3

我想對我的rails代碼中運行的每種方法都做一些處理,因爲我需要一些關於運行時方法的信息。我正在使用set_trace_func來做到這一點。裏面set_trace_func我們收到綁定:鑑於綁定,確定一個rails方法返回什麼?

set_trace_func proc { |event, file, line, id, binding, classname| 
    printf "%8s %s:%-2d %10s %8s\n", event, file, line, id, classname 
} 

我怎樣才能確定從這個綁定什麼函數將返回?我知道如何訪問變量,參數等,但不知道如何獲得返回值,還有更好的工具來做到這一點?

+0

什麼功能?從哪裏來確定?請提供解釋,這是可以理解的。 – mudasobwa

+0

另外,這個問題與rails和元編程無關。 – mudasobwa

+0

@mudasobwa這有幫助嗎? –

回答

3

set_trace_func通過TracePoint其能夠檢查的取代的方法的return_value

def foo 
    2 * 3 
end 

TracePoint.trace(:return) do |tp| 
    puts "`#{tp.method_id}' returned #{tp.return_value.inspect}" 
end 

foo 

輸出:

`foo' returned 6 

還有:c_return跟蹤C實現和b_return用於塊的方法。

相關問題