Methods
Public Instance methods
benchmark(message = "Benchmarking", options = {})

Allows you to measure the execution time of a block in a template and records the result to the log. Wrap this block around expensive operations or possible bottlenecks to get a time reading for the operation. For example, let’s say you thought your file processing method was taking too long; you could wrap it in a benchmark block.

 <% benchmark "Process data files" do %>
   <%= expensive_files_operation %>
 <% end %>

That would add something like “Process data files (345.2ms)” to the log, which you can then use to compare timings when optimizing your code.

You may give an optional logger level as the :level option. (:debug, :info, :warn, :error); the default value is :info.

 <% benchmark "Low-level files", :level => :debug do %>
   <%= lowlevel_files_operation %>
 <% end %>

Finally, you can pass true as the third argument to silence all log activity inside the block. This is great for boiling down a noisy block to just a single statement:

 <% benchmark "Process data files", :level => :info, :silence => true do %>
   <%= expensive_and_chatty_files_operation %>
 <% end %>
      # File activesupport/lib/active_support/benchmarkable.rb, line 32
32:     def benchmark(message = "Benchmarking", options = {})
33:       if logger
34:         if options.is_a?(Symbol)
35:           ActiveSupport::Deprecation.warn("use benchmark('#{message}', :level => :#{options}) instead", caller)
36:           options = { :level => options, :silence => false }
37:         else
38:           options.assert_valid_keys(:level, :silence)
39:           options[:level] ||= :info
40:         end
41: 
42:         result = nil
43:         ms = Benchmark.ms { result = options[:silence] ? logger.silence { yield } : yield }
44:         logger.send(options[:level], '%s (%.1fms)' % [ message, ms ])
45:         result
46:       else
47:         yield
48:       end
49:     end
silence()

Silence the logger during the execution of the block.

      # File activesupport/lib/active_support/benchmarkable.rb, line 53
53:     def silence
54:       old_logger_level, logger.level = logger.level, ::Logger::ERROR if logger
55:       yield
56:     ensure
57:       logger.level = old_logger_level if logger
58:     end