Class: LcpRuby::Metrics::CollectorRegistry
- Inherits:
-
Object
- Object
- LcpRuby::Metrics::CollectorRegistry
- Defined in:
- lib/lcp_ruby/metrics/collector_registry.rb
Class Method Summary collapse
- .clear! ⇒ Object
- .collect_all ⇒ Object
- .discover!(base_path = nil) ⇒ Object
- .register(collector_class) ⇒ Object
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_all ⇒ Object
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 |