Class: LcpRuby::Metrics::CollectorRegistry

Inherits:
Object
  • Object
show all
Defined in:
lib/lcp_ruby/metrics/collector_registry.rb

Class Method Summary collapse

Class Method Details

.clear!Object



39
40
41
42
43
# File 'lib/lcp_ruby/metrics/collector_registry.rb', line 39

def clear!
  subscriptions.each { |sub| ActiveSupport::Notifications.unsubscribe(sub) }
  @subscriptions = []
  @collectors = []
end

.collect_allObject



35
36
37
# File 'lib/lcp_ruby/metrics/collector_registry.rb', line 35

def collect_all
  collectors.each(&:safe_collect)
end

.discover!(base_path = nil) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/lcp_ruby/metrics/collector_registry.rb', line 5

def discover!(base_path = nil)
  base_path ||= Rails.root.join("app").to_s if defined?(Rails)
  return unless base_path

  metrics_path = File.join(base_path, "lcp_metrics")
  return unless File.directory?(metrics_path)

  Dir[File.join(metrics_path, "**", "*.rb")].sort.each do |file|
    require file

    relative = file.sub("#{metrics_path}/", "").sub(/\.rb$/, "")
    class_name = relative.split("/").map(&:camelize).join("::")

    begin
      collector_class = class_name.constantize
      register(collector_class)
    rescue NameError => e
      LcpRuby.record_error(e, subsystem: "collector", collector: class_name)
    end
  end
end

.register(collector_class) ⇒ Object



27
28
29
30
31
32
33
# File 'lib/lcp_ruby/metrics/collector_registry.rb', line 27

def register(collector_class)
  collector_class.register_metrics!
  instance = collector_class.new
  subs = collector_class.activate_subscriptions!(instance)
  subscriptions.concat(subs)
  collectors << instance
end