2009-05-18 19:15:43 -04:00
|
|
|
module AbstractController
|
|
|
|
module Benchmarker
|
|
|
|
extend ActiveSupport::DependencyModule
|
2009-05-28 10:49:02 -04:00
|
|
|
|
2009-05-18 19:15:43 -04:00
|
|
|
depends_on Logger
|
2009-05-28 10:49:02 -04:00
|
|
|
|
2009-05-18 19:15:43 -04:00
|
|
|
module ClassMethods
|
|
|
|
def benchmark(title, log_level = ::Logger::DEBUG, use_silence = true)
|
|
|
|
if logger && logger.level >= log_level
|
|
|
|
result = nil
|
|
|
|
ms = Benchmark.ms { result = use_silence ? silence { yield } : yield }
|
|
|
|
logger.add(log_level, "#{title} (#{('%.1f' % ms)}ms)")
|
|
|
|
result
|
|
|
|
else
|
|
|
|
yield
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
# Silences the logger for the duration of the block.
|
|
|
|
def silence
|
|
|
|
old_logger_level, logger.level = logger.level, ::Logger::ERROR if logger
|
|
|
|
yield
|
|
|
|
ensure
|
|
|
|
logger.level = old_logger_level if logger
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
2009-05-28 10:49:02 -04:00
|
|
|
end
|