Class: Skylight::Extensions::Collection

Inherits:
Object
  • Object
show all
Defined in:
lib/skylight/extensions.rb

Instance Method Summary collapse

Constructor Details

#initialize(config, extensions = []) ⇒ Collection

Returns a new instance of Collection.



8
9
10
11
# File 'lib/skylight/extensions.rb', line 8

def initialize(config, extensions = [])
  @config = config
  @extensions = extensions
end

Instance Method Details

#allowed_meta_keysObject



53
54
55
# File 'lib/skylight/extensions.rb', line 53

def allowed_meta_keys
  @allowed_meta_keys ||= extensions.flat_map(&:allowed_meta_keys).uniq
end

#disable!(ext_name) ⇒ Object



22
23
24
25
26
27
# File 'lib/skylight/extensions.rb', line 22

def disable!(ext_name)
  find_by_name(ext_name) do |ext_class|
    extensions.reject! { |x| x.is_a?(ext_class) }
    rememoize!
  end
end

#enable!(ext_name) ⇒ Object



13
14
15
16
17
18
19
20
# File 'lib/skylight/extensions.rb', line 13

def enable!(ext_name)
  return if enabled?(ext_name)

  find_by_name(ext_name) do |ext_class|
    extensions << ext_class.new(config)
    rememoize!
  end
end

#enabled?(ext_name) ⇒ Boolean

Returns:

  • (Boolean)


29
30
31
32
33
# File 'lib/skylight/extensions.rb', line 29

def enabled?(ext_name)
  return unless (ext_class = find_by_name(ext_name))

  !!extensions.detect { |x| x.is_a?(ext_class) }
end

#process_instrument_options(opts, meta) ⇒ Object

meta is a mutable hash that will be passed to the instrumenter. This method bridges Skylight.instrument and instrumenter.instrument.



41
42
43
# File 'lib/skylight/extensions.rb', line 41

def process_instrument_options(opts, meta)
  extensions.each { |ext| ext.process_instrument_options(opts, meta) }
end

#process_normalizer_meta(payload, meta, **opts) ⇒ Object



45
46
47
# File 'lib/skylight/extensions.rb', line 45

def process_normalizer_meta(payload, meta, **opts)
  extensions.each { |ext| ext.process_normalizer_meta(payload, meta, **opts) }
end

#process_trace_meta(meta) ⇒ Object



35
36
37
# File 'lib/skylight/extensions.rb', line 35

def process_trace_meta(meta)
  extensions.each { |ext| ext.process_trace_meta(meta) }
end

#trace_preprocess_meta(meta) ⇒ Object



49
50
51
# File 'lib/skylight/extensions.rb', line 49

def trace_preprocess_meta(meta)
  extensions.each { |ext| ext.trace_preprocess_meta(meta) }
end