class Mengpaneel::Manager

Constants

MODES

Attributes

controller[R]
flushing_strategy[RW]
mode[R]

Public Class Methods

new(controller = nil, &block) click to toggle source
# File lib/mengpaneel/manager.rb, line 14
def initialize(controller = nil, &block)
  @controller = controller

  @mode = :tracking

  wrap(&block) if block
end

Public Instance Methods

all_calls() click to toggle source
# File lib/mengpaneel/manager.rb, line 43
def all_calls
  Hash[call_proxies.map { |mode, call_proxy| [mode, call_proxy.all_calls] }]
end
before_setup(&block) click to toggle source
# File lib/mengpaneel/manager.rb, line 62
def before_setup(&block)
  with_mode(:before_setup, &block)
end
call_proxy() click to toggle source
# File lib/mengpaneel/manager.rb, line 34
def call_proxy
  call_proxies[@mode]
end
Also aliased as: mixpanel
clear_calls(mode = @mode) click to toggle source
# File lib/mengpaneel/manager.rb, line 39
def clear_calls(mode = @mode)
  call_proxies.delete(mode)
end
flush_calls() click to toggle source
# File lib/mengpaneel/manager.rb, line 83
def flush_calls
  Flusher.new(self).run
end
mixpanel()
Alias for: call_proxy
replay_delayed_calls() click to toggle source
# File lib/mengpaneel/manager.rb, line 79
def replay_delayed_calls
  Replayer.new(self).run
end
setup(&block) click to toggle source
# File lib/mengpaneel/manager.rb, line 66
def setup(&block)
  clear_calls(:setup)
  with_mode(:setup, &block)
end
setup?() click to toggle source
# File lib/mengpaneel/manager.rb, line 75
def setup?
  call_proxies[:setup].all_calls.length > 0
end
tracking(&block) click to toggle source
# File lib/mengpaneel/manager.rb, line 71
def tracking(&block)
  with_mode(:tracking, &block)
end
with_mode(mode) { |mixpanel| ... } click to toggle source
# File lib/mengpaneel/manager.rb, line 47
def with_mode(mode, &block)
  original_mode = @mode
  @mode = mode

  begin
    if block.arity == 1
      yield(mixpanel)
    else
      yield
    end
  ensure
    @mode = original_mode
  end
end
wrap() { |self| ... } click to toggle source
# File lib/mengpaneel/manager.rb, line 22
def wrap(&block)
  replay_delayed_calls
  
  if block.arity == 1
    yield(self)
  else
    yield
  end
ensure
  flush_calls
end

Private Instance Methods

call_proxies() click to toggle source
# File lib/mengpaneel/manager.rb, line 88
def call_proxies
  @call_proxies ||= Hash.new { |proxies, mode| proxies[mode] = CallProxy.new }
end