Module: Omnitrack::Registry
- Defined in:
- lib/omnitrack/registry.rb
Overview
Thread-safe registry mapping adapter names (symbols) → adapter classes. Adapters are auto-registered via Base.inherited and can also be registered manually with Registry.register.
Class Method Summary collapse
-
.enabled_adapters ⇒ Array<Omnitrack::Adapters::Base>
Instantiate all enabled adapters based on current configuration.
-
.lookup(name) ⇒ Class
Look up an adapter class by name.
-
.register(klass) ⇒ Object
Register an adapter class.
-
.registered ⇒ Object
All registered adapter names.
-
.reset! ⇒ Object
Clear all registrations (useful in tests).
Class Method Details
.enabled_adapters ⇒ Array<Omnitrack::Adapters::Base>
Instantiate all enabled adapters based on current configuration.
40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/omnitrack/registry.rb', line 40 def enabled_adapters MUTEX.synchronize { @adapters.dup }.map do |adapter_name, klass| cfg = Omnitrack.config.adapter_config(adapter_name) next unless cfg.fetch(:enabled, false) klass.new(config: cfg, logger: Omnitrack.logger) rescue Omnitrack::ConfigurationError => e Omnitrack.logger.error("registry.init_error", adapter: adapter_name, message: e.) nil end.compact end |
.lookup(name) ⇒ Class
Look up an adapter class by name.
26 27 28 29 30 31 |
# File 'lib/omnitrack/registry.rb', line 26 def lookup(name) klass = MUTEX.synchronize { @adapters[name.to_sym] } raise Omnitrack::UnknownAdapterError, "Unknown adapter: #{name}" unless klass klass end |
.register(klass) ⇒ Object
Register an adapter class.
16 17 18 19 20 |
# File 'lib/omnitrack/registry.rb', line 16 def register(klass) MUTEX.synchronize do @adapters[klass.adapter_name] = klass end end |
.registered ⇒ Object
All registered adapter names
34 35 36 |
# File 'lib/omnitrack/registry.rb', line 34 def registered MUTEX.synchronize { @adapters.keys } end |
.reset! ⇒ Object
Clear all registrations (useful in tests)
54 55 56 |
# File 'lib/omnitrack/registry.rb', line 54 def reset! MUTEX.synchronize { @adapters = {} } end |