class SiteHealth::Timer

Attributes

finished_at[R]
started_at[R]

Public Class Methods

measure(&block) click to toggle source
# File lib/site_health/timer.rb, line 13
def self.measure(&block)
  new.tap { |timer| timer.measure(&block) }
end
start() click to toggle source
# File lib/site_health/timer.rb, line 9
def self.start
  new.tap(&:start)
end

Public Instance Methods

diff() click to toggle source
# File lib/site_health/timer.rb, line 34
def diff
  fail(StandardError, 'timer must be started') unless @started

  finish = @finished || high_precision_time
  finish - @started
end
finish() click to toggle source
# File lib/site_health/timer.rb, line 29
def finish
  @finished = high_precision_time
  @finished_at = Time.now
end
measure() { || ... } click to toggle source
# File lib/site_health/timer.rb, line 17
def measure
  start
  yield
  finish
  self
end
start() click to toggle source
# File lib/site_health/timer.rb, line 24
def start
  @started = high_precision_time
  @started_at = Time.now
end

Private Instance Methods

high_precision_time() click to toggle source
# File lib/site_health/timer.rb, line 43
def high_precision_time
  Process.clock_gettime(Process::CLOCK_MONOTONIC)
end