2017-08-09 43 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用于块的方法。