2014-03-14 29 views
0

当我通过函数进行轻松调试时,Ruby/Rails是否可以自动打印函数名称?正如我发现在每个功能之前添加投入都很麻烦。请指教和感谢!当遍历函数时自动打印每个函数名称

实施例:

def update_original_calendar 
    puts '-> update_original_calendar' 
end 

def update_destination_calendar 
    puts '-> update_destination_calendar' 
    update_original_calendar 
end 

实施例的结果:

-> update_destination_calendar 
-> update_original_calendar 
+1

这不是调试器是什么对于? –

回答

0

你可以使用Kernel#set_trace_func方法。将下面的代码放在初始化逻辑中的某处。只要确保当应用程序逻辑达到你想要跟踪的方法时,那段代码就已经被执行了。

classes_to_trace = %w(YOUR_CLASSNAME1 YOUR_CLASSNAME2) 
set_trace_func proc {|event, file, line, id, binding, classname| 
    if event == 'call' and classes_to_trace.include?(classname.to_s) 
    puts "event = #{event}, file = #{file}, line = #{line}, id = #{id}, classname = #{classname}" 
    end 
} 
0

如果您在使用Ruby 2.X:

http://ruby-doc.org/core-2.0/TracePoint.html

trace = TracePoint.new(:call) do |tp| 
    p [tp.lineno, tp.defined_class, tp.method_id, tp.event] 
end 

trace.enable 

# Your code here 

我没有测试它,但它应该工作