因此,在启动新项目或调试现有项目时,我会使用大量跟踪代码/日志记录。我想知道你用什么技术来管理它,因为我总是在做提交之前删除它,然后如果出现其他问题则必须重写它。
我正在考虑使用包含所有跟踪代码的开发分支,并且主服务器将是干净的,但似乎很难筛选出什么是调试代码,以及应该合并的内容。
有什么建议吗?
答案 0 :(得分:3)
怎么样
def debug_only
if $DEBUG
yield
end
end
...
debug_only { puts "Some tracing code." }
在命令行上传递-d
将使$DEBUG
成为真。
% ruby -e 'p $DEBUG'
false
% ruby -de 'p $DEBUG'
true
在这种情况下,一种可能性是将跟踪代码与您正在跟踪的内容分开。
例如:
release.rb:
class A
def stuff(a, b)
# do stuff ...
end
end
debug.rb:
require 'release'
class A
alias release_stuff stuff
def stuff(a, b)
puts "calling stuff with (#{a.inspect}, #{b.inspect})"
rv = release_stuff(a,b)
puts "Done calling stuff."
rv
end
end
这有一个问题,即粒度是一种方法,然后它可能再次鼓励你编写更小的方法。你当然可以通过一些“元编程”来减少冗长。
您还可以使用instance_method,bind和define_method来匿名旧方法的副本。
然后你使用类似
的东西ruby -d -rdebug program.rb