Code Climate Build Status

Clockblock

Extend Clockblock::Timing in your class definition to add timers to your methods:

require 'clockblock'

class Foo
  extend Clockblock::Timing
  add_timing_to :bar

  def bar
    sleep 2
  end

end

f = Foo.new
f.bar

f.clockblock_timers[:bar]
# => {:started_at=>2012-07-26 16:04:03 -0400, :finished_at=>2012-07-26 16:04:05 -0400, :duration=>2.001059, :stage=>:finished}

Extend your instances with Clockblock::Timing to add timers to your methods:

require 'clockblock'

class Foo
  def bar
    sleep 2
  end
end

f = Foo.new
f.extend Clockblock::Timing
f.add_timing_to :bar
f.bar

f.clockblock_timers[:bar]
# => {:started_at=>2012-07-26 16:04:03 -0400, :finished_at=>2012-07-26 16:04:05 -0400, :duration=>2.001059, :stage=>:finished}

Extend your classes with Clockblock::Timing to add timers to your methods:

require 'clockblock'

class Foo
  def bar
    sleep 2
  end
end

Foo.extend Clockblock::Timing
Foo.add_timing_to :bar, :baz
puts Foo.instance_variable_get(:@future_timer_methods)
class Foo; def baz; sleep 2; end; end
f = Foo.new
f.bar
f.baz
puts f.clockblock_timers
# => {:bar=>{:started_at=>2012-07-30 10:43:48 -0400, :finished_at=>2012-07-30 10:43:49 -0400, :duration=>1.0004, :stage=>:finished}, :baz=>{:started_at=>2012-07-30 10:43:49 -0400, :finished_at=>2012-07-30 10:43:50 -0400, :duration=>1.000906, :stage=>:finished}}

Wrap your code in a Clockblock clock block to measure execution duration.

require 'clockblock'

class Foo

  def bar
    t = Clockblock::Timer.new
    result = t.clock do
      sleep 2 # replace 'sleep 2' with your code!
    end
    puts t.attributes
    result
  end
end