Changesets can be listed by changeset number.
The Git repository is here.
- Revision:
- 373
- Log:
Initial import of Radiant 0.9.1, which is now packaged as a gem. This is an
import of the tagged 0.9.1 source checked out from GitHub, which isn't quite
the same as the gem distribution - but it doesn't seem to be available in an
archived form and the installed gem already has modifications, so this is
the closest I can get.
- Author:
- rool
- Date:
- Mon Mar 21 13:40:05 +0000 2011
- Size:
- 2212 Bytes
1 | require 'benchmark' |
2 | |
3 | module ActionView |
4 | module Helpers |
5 | # This helper offers a method to measure the execution time of a block |
6 | # in a template. |
7 | module BenchmarkHelper |
8 | # Allows you to measure the execution time of a block |
9 | # in a template and records the result to the log. Wrap this block around |
10 | # expensive operations or possible bottlenecks to get a time reading |
11 | # for the operation. For example, let's say you thought your file |
12 | # processing method was taking too long; you could wrap it in a benchmark block. |
13 | # |
14 | # <% benchmark "Process data files" do %> |
15 | # <%= expensive_files_operation %> |
16 | # <% end %> |
17 | # |
18 | # That would add something like "Process data files (345.2ms)" to the log, |
19 | # which you can then use to compare timings when optimizing your code. |
20 | # |
21 | # You may give an optional logger level as the :level option. |
22 | # (:debug, :info, :warn, :error); the default value is :info. |
23 | # |
24 | # <% benchmark "Low-level files", :level => :debug do %> |
25 | # <%= lowlevel_files_operation %> |
26 | # <% end %> |
27 | # |
28 | # Finally, you can pass true as the third argument to silence all log activity |
29 | # inside the block. This is great for boiling down a noisy block to just a single statement: |
30 | # |
31 | # <% benchmark "Process data files", :level => :info, :silence => true do %> |
32 | # <%= expensive_and_chatty_files_operation %> |
33 | # <% end %> |
34 | def benchmark(message = "Benchmarking", options = {}) |
35 | if controller.logger |
36 | if options.is_a?(Symbol) |
37 | ActiveSupport::Deprecation.warn("use benchmark('#{message}', :level => :#{options}) instead", caller) |
38 | options = { :level => options, :silence => false } |
39 | else |
40 | options.assert_valid_keys(:level, :silence) |
41 | options[:level] ||= :info |
42 | end |
43 | |
44 | result = nil |
45 | ms = Benchmark.ms { result = options[:silence] ? controller.logger.silence { yield } : yield } |
46 | controller.logger.send(options[:level], '%s (%.1fms)' % [ message, ms ]) |
47 | result |
48 | else |
49 | yield |
50 | end |
51 | end |
52 | end |
53 | end |
54 | end |