Class: Pvectl::Commands::ResourceRegistry Abstract
- Inherits:
-
Object
- Object
- Pvectl::Commands::ResourceRegistry
- Defined in:
- lib/pvectl/commands/resource_registry.rb
Overview
Subclass for each command namespace (Get, Top, Logs).
Abstract base class for command resource registries.
Provides handler registration and lookup. Each subclass maintains its own isolated set of handlers via self.inherited callback.
Direct Known Subclasses
Get::ResourceRegistry, Logs::ResourceRegistry, Top::ResourceRegistry
Class Method Summary collapse
-
.for(resource_type) ⇒ Object?
Returns a new handler instance for the resource type.
- .inherited(subclass) ⇒ Object
-
.register(resource_type, handler_class, aliases: []) ⇒ void
Registers a handler class for a resource type.
-
.registered?(resource_type) ⇒ Boolean
Checks if a resource type is registered.
-
.registered_types ⇒ Array<String>
Returns all registered type names (including aliases).
-
.reset! ⇒ void
private
Clears all registered handlers.
Class Method Details
.for(resource_type) ⇒ Object?
Returns a new handler instance for the resource type.
41 42 43 44 45 46 |
# File 'lib/pvectl/commands/resource_registry.rb', line 41 def for(resource_type) return nil if resource_type.nil? handler_class = @handlers[resource_type.to_s] handler_class&.new end |
.inherited(subclass) ⇒ Object
20 21 22 23 |
# File 'lib/pvectl/commands/resource_registry.rb', line 20 def self.inherited(subclass) super subclass.instance_variable_set(:@handlers, {}) end |
.register(resource_type, handler_class, aliases: []) ⇒ void
This method returns an undefined value.
Registers a handler class for a resource type.
32 33 34 35 |
# File 'lib/pvectl/commands/resource_registry.rb', line 32 def register(resource_type, handler_class, aliases: []) @handlers[resource_type.to_s] = handler_class aliases.each { |a| @handlers[a.to_s] = handler_class } end |
.registered?(resource_type) ⇒ Boolean
Checks if a resource type is registered.
59 60 61 |
# File 'lib/pvectl/commands/resource_registry.rb', line 59 def registered?(resource_type) @handlers.key?(resource_type.to_s) end |
.registered_types ⇒ Array<String>
Returns all registered type names (including aliases).
51 52 53 |
# File 'lib/pvectl/commands/resource_registry.rb', line 51 def registered_types @handlers.keys end |
.reset! ⇒ void
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
This method returns an undefined value.
Clears all registered handlers.
67 68 69 |
# File 'lib/pvectl/commands/resource_registry.rb', line 67 def reset! @handlers = {} end |