Module: ActionController::Benchmarking::ClassMethods
- Defined in:
- lib/action_controller/benchmarking.rb
Instance Method Summary collapse
-
#benchmark(title, log_level = Logger::DEBUG, use_silence = true) ⇒ Object
Log and benchmark the workings of a single block and silence whatever logging that may have happened inside it (unless
use_silence
is set to false). -
#silence ⇒ Object
Silences the logger for the duration of the block.
Instance Method Details
#benchmark(title, log_level = Logger::DEBUG, use_silence = true) ⇒ Object
Log and benchmark the workings of a single block and silence whatever logging that may have happened inside it (unless use_silence
is set to false).
The benchmark is only recorded if the current level of the logger matches the log_level
, which makes it easy to include benchmarking statements in production software that will remain inexpensive because the benchmark will only be conducted if the log level is low enough.
23 24 25 26 27 28 29 30 31 32 |
# File 'lib/action_controller/benchmarking.rb', line 23 def benchmark(title, log_level = Logger::DEBUG, use_silence = true) if logger && logger.level == log_level result = nil seconds = Benchmark.realtime { result = use_silence ? silence { yield } : yield } logger.add(log_level, "#{title} (#{('%.1f' % (seconds * 1000))}ms)") result else yield end end |
#silence ⇒ Object
Silences the logger for the duration of the block.
35 36 37 38 39 40 |
# File 'lib/action_controller/benchmarking.rb', line 35 def silence old_logger_level, logger.level = logger.level, Logger::ERROR if logger yield ensure logger.level = old_logger_level if logger end |