class Capistrano::Measure::Timer

Constants

Event

Attributes

events[R]

Public Class Methods

new() click to toggle source
# File lib/capistrano/measure/timer.rb, line 20
def initialize
  @indent = 0
  @open_events = []
  @events = []
end

Public Instance Methods

report_events() { |event| ... } click to toggle source
# File lib/capistrano/measure/timer.rb, line 44
def report_events
  raise ::Capistrano::Measure::Error, "Performance evaluation is not yet completed, as there are events still open: #{@open_events.map(&:name).join(', ')}" unless @open_events.empty?
  return to_enum(__callee__) unless block_given?

  (events + [Event.new]).each_cons(2) do |event, next_event|
    yield event unless event.start? && event.eq?(next_event)
  end
end
start(event_name) click to toggle source
# File lib/capistrano/measure/timer.rb, line 26
def start(event_name)
  event = Event.new(event_name, :start, Time.now, @indent)
  @open_events << event
  @events << event
  @indent += 1

  event
end
stop(event_name) click to toggle source
# File lib/capistrano/measure/timer.rb, line 35
def stop(event_name)
  event = close_event(event_name)
  @open_events.pop
  @events << event
  @indent = event.indent

  event
end

Private Instance Methods

close_event(event_name) click to toggle source
# File lib/capistrano/measure/timer.rb, line 55
def close_event(event_name)
  event = Event.new(event_name, :stop, Time.now, @indent-1)
  open_event = @open_events.last
  raise ::Capistrano::Measure::Error, "Cannot estimate time for event `#{event_name}`" unless event.eq?(open_event)

  event.elapsed_time = (event.time - open_event.time).to_i
  event
end