当我通过函数以便轻松调试时,Ruby / Rails是否有自动打印函数名称?正如我发现在每个函数之前添加puts很麻烦。请指教并谢谢!
示例:
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
答案 0 :(得分: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
}
答案 1 :(得分: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
我还没有对它进行测试,但它应该可行