Class: Speedup::Collectors::Collector

Inherits:
Object
  • Object
show all
Defined in:
lib/speedup/collectors/collector.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Collector

Returns a new instance of Collector.



9
10
11
12
13
14
# File 'lib/speedup/collectors/collector.rb', line 9

def initialize(options = {})
  @options = options

  parse_options
  setup_subscribes
end

Class Method Details

.keyObject



5
6
7
# File 'lib/speedup/collectors/collector.rb', line 5

def self.key
  self.name.to_s.split('::').last.gsub(/Collector$/, '').underscore.to_sym
end

Instance Method Details

#context_idObject

Returns String.



46
47
48
# File 'lib/speedup/collectors/collector.rb', line 46

def context_id
  "speedup-context-#{key}"
end

#dom_idObject

The wrapper ID for the individual panel in the Speedup bar.

Returns String.



53
54
55
# File 'lib/speedup/collectors/collector.rb', line 53

def dom_id
  "speedup-panel-#{key}"
end

#enabled?Boolean

Conditionally enable views based on any gathered data. Helpful if you don’t want views to show up when they return 0 or are touched during the request.

Returns true.

Returns:

  • (Boolean)


29
30
31
# File 'lib/speedup/collectors/collector.rb', line 29

def enabled?
  true
end

#event_to_data(evt) ⇒ Object

Transfer the event to actual stored data. Default implementation takes full payload, event time and event duration.



82
83
84
# File 'lib/speedup/collectors/collector.rb', line 82

def event_to_data(evt)
  evt.payload.merge( time: evt.time, duration: evt.duration )
end

#filter_event?(evt) ⇒ Boolean

Returns:

  • (Boolean)


86
87
88
# File 'lib/speedup/collectors/collector.rb', line 86

def filter_event?(evt)
  !Speedup.enabled?
end

#keyObject Also known as: defer_key

Returns Symbol.



35
36
37
# File 'lib/speedup/collectors/collector.rb', line 35

def key
  self.class.key
end

#parse_optionsObject

Where any subclasses should pick and pull from @options to set any and all instance variables they like.

Returns nothing.



20
21
22
# File 'lib/speedup/collectors/collector.rb', line 20

def parse_options
  # pass
end

#register(*args, &block) ⇒ Object



61
62
63
64
65
66
67
68
69
70
71
# File 'lib/speedup/collectors/collector.rb', line 61

def register(*args, &block)
  if block_given?
    subscribe(*args, &block)
  else
    subscribe(*args) do |*args|
      next unless Speedup.enabled?
      evt = ActiveSupport::Notifications::Event.new(*args)
      store_event(evt) unless filter_event?(evt)
    end
  end
end

#render?Boolean

Returns:

  • (Boolean)


40
41
42
# File 'lib/speedup/collectors/collector.rb', line 40

def render?
  enabled?
end

#store_event(evt, key = nil) ⇒ Object

Stores en event to request context. Uses a event_to_data method.



75
76
77
78
# File 'lib/speedup/collectors/collector.rb', line 75

def store_event(evt, key=nil)
  key ||= self.key
  Speedup.request.store_event(key, event_to_data(evt) ) if Speedup.request
end

#subscribe(*args, &block) ⇒ Object



57
58
59
# File 'lib/speedup/collectors/collector.rb', line 57

def subscribe(*args, &block)
  ActiveSupport::Notifications.subscribe(*args, &block)
end