Class: Tasker::Events::CustomRegistry
- Inherits:
-
Object
- Object
- Tasker::Events::CustomRegistry
- Includes:
- Singleton
- Defined in:
- lib/tasker/events/custom_registry.rb
Overview
CustomRegistry manages registration and validation of developer-defined custom events
This registry provides a safe way for developers to define their own events alongside Tasker's system events, with conflict prevention and namespace validation.
Usage: registry = Tasker::Events::CustomRegistry.instance registry.register_event('order.fulfilled', description: 'Order completed', fired_by: ['OrderService'])
Or through the Events module: Tasker::Events.register_custom_event('order.fulfilled', description: 'Order completed')
Instance Method Summary collapse
-
#clear! ⇒ void
(also: #clear_all_events)
Clear all registered custom events (useful for testing).
-
#custom_events ⇒ Hash
Get all registered custom events.
-
#event_info(name) ⇒ Hash?
Get event information by name.
-
#event_metadata(name) ⇒ Hash?
Get metadata for a specific custom event.
-
#initialize ⇒ CustomRegistry
constructor
A new instance of CustomRegistry.
-
#register_event(name, description: 'Custom event', fired_by: []) ⇒ void
Register a custom event with metadata.
-
#registered?(name) ⇒ Boolean
Check if an event is registered as a custom event.
-
#registered_events ⇒ Array<String>
Get all registered custom event names.
Constructor Details
#initialize ⇒ CustomRegistry
Returns a new instance of CustomRegistry.
21 22 23 |
# File 'lib/tasker/events/custom_registry.rb', line 21 def initialize @custom_events = {} end |
Instance Method Details
#clear! ⇒ void Also known as: clear_all_events
This method returns an undefined value.
Clear all registered custom events (useful for testing)
75 76 77 |
# File 'lib/tasker/events/custom_registry.rb', line 75 def clear! @custom_events.clear end |
#custom_events ⇒ Hash
Get all registered custom events
52 53 54 |
# File 'lib/tasker/events/custom_registry.rb', line 52 def custom_events @custom_events.dup end |
#event_info(name) ⇒ Hash?
Get event information by name
93 94 95 |
# File 'lib/tasker/events/custom_registry.rb', line 93 def event_info(name) @custom_events[name] end |
#event_metadata(name) ⇒ Hash?
Get metadata for a specific custom event
68 69 70 |
# File 'lib/tasker/events/custom_registry.rb', line 68 def (name) @custom_events[name] end |
#register_event(name, description: 'Custom event', fired_by: []) ⇒ void
This method returns an undefined value.
Register a custom event with metadata
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/tasker/events/custom_registry.rb', line 32 def register_event(name, description: 'Custom event', fired_by: []) validate_event_name!(name) @custom_events[name] = { name: name, category: 'custom', description: description, fired_by: Array(fired_by), registered_at: Time.current } # Register with dry-events publisher so subscribers can listen Tasker::Events::Publisher.instance.register_event(name) Rails.logger.debug { "Registered custom event: #{name}" } end |
#registered?(name) ⇒ Boolean
Check if an event is registered as a custom event
60 61 62 |
# File 'lib/tasker/events/custom_registry.rb', line 60 def registered?(name) @custom_events.key?(name) end |
#registered_events ⇒ Array<String>
Get all registered custom event names
85 86 87 |
# File 'lib/tasker/events/custom_registry.rb', line 85 def registered_events @custom_events.keys end |