Module: Pangea::ResourceRegistry
- Defined in:
- lib/pangea/resource_registry.rb
Overview
Global registry for resource modules that auto-register when loaded. Thread-safe: all mutation and read paths are guarded by a Mutex.
Class Method Summary collapse
-
.clear! ⇒ Object
Clear registry (useful for testing).
-
.modules_for(provider) ⇒ Object
Get modules for a specific provider.
-
.register(provider, mod) ⇒ Object
Support provider-based registration used by individual resources.
-
.register_module(mod) ⇒ Object
Register a module to be available in template contexts.
-
.registered?(mod) ⇒ Boolean
Check if a module is registered.
-
.registered_modules ⇒ Object
Get all registered modules.
-
.stats ⇒ Object
Get registry statistics.
Class Method Details
.clear! ⇒ Object
Clear registry (useful for testing)
39 40 41 42 43 44 |
# File 'lib/pangea/resource_registry.rb', line 39 def clear! @mutex.synchronize do @registered_modules.clear @provider_modules.clear end end |
.modules_for(provider) ⇒ Object
Get modules for a specific provider
61 62 63 |
# File 'lib/pangea/resource_registry.rb', line 61 def modules_for(provider) @mutex.synchronize { @provider_modules[provider].to_a } end |
.register(provider, mod) ⇒ Object
Support provider-based registration used by individual resources
52 53 54 55 56 57 58 |
# File 'lib/pangea/resource_registry.rb', line 52 def register(provider, mod) @mutex.synchronize do @provider_modules[provider].add(mod) # Also add to global registry for backward compatibility @registered_modules.add(mod) end end |
.register_module(mod) ⇒ Object
Register a module to be available in template contexts
29 30 31 |
# File 'lib/pangea/resource_registry.rb', line 29 def register_module(mod) @mutex.synchronize { @registered_modules.add(mod) } end |
.registered?(mod) ⇒ Boolean
Check if a module is registered
47 48 49 |
# File 'lib/pangea/resource_registry.rb', line 47 def registered?(mod) @mutex.synchronize { @registered_modules.include?(mod) } end |
.registered_modules ⇒ Object
Get all registered modules
34 35 36 |
# File 'lib/pangea/resource_registry.rb', line 34 def registered_modules @mutex.synchronize { @registered_modules.to_a } end |
.stats ⇒ Object
Get registry statistics
66 67 68 69 70 71 72 73 74 |
# File 'lib/pangea/resource_registry.rb', line 66 def stats @mutex.synchronize do { total_modules: @registered_modules.size, modules: @registered_modules.map(&:name), by_provider: @provider_modules.transform_values(&:size) } end end |