我有一个普通的ruby应用程序,我希望在调试模式下实现一个选项来启动应用程序,在此我向所有数据库查询方法添加额外的日志记录,输出查询字符串和所用的时间。
在调试模式下启动时,全局变量$ debug_mode将设置为true。
我的第一个想法是创建一个方法,它接受一段代码并记录适当的数据,基本上是:
def debug(query_string)
if $debug_mode
start_time = Time.now
yield
time_elapsed = Time.now - start_time
log time_elapsed
log query_string
else
yield
end
end
然后,使用此方法包装我想要输出其他日志记录的每个代码块。
一些担忧:
我不禁感到有更好的方法来实现这一目标。
非常感谢任何提示和建议。
谢谢。
答案 0 :(得分:2)
不要担心条件将花费额外的时间,SQL查询会使任何差异相形见绌。如果你关心速度,你应该用C语言写作,而不是红宝石。
这只是很好的设计,我唯一要改变的是使用$DEBUG
代替$debug_mode
,因为$DEBUG
can be set from the command line已经是标准。
此外,您可能在某些时候想要收益率的结果,因此您可以执行以下操作:
def debug(query_string)
if $DEBUG
start_time = Time.now
result = yield
time_elapsed = Time.now - start_time
log time_elapsed
log query_string
return result
else
return yield
end
end