Module: TrackRelay::Catalog
- Defined in:
- lib/track_relay/catalog.rb
Overview
Process-wide registry of event definitions and user properties.
The DSL::EventBuilder pushes definitions in via Catalog.register; the rest of the gem (and host applications) read them out via Catalog.lookup, Catalog.defined?, and Catalog.all.
State is module-level by design — the gem assumes one catalog per Ruby process, populated during boot. Tests that need isolation call Catalog.clear! in ‘setup` / `teardown` to reset between cases.
Class Attribute Summary collapse
-
.user_properties ⇒ Hash{Symbol => Symbol}
readonly
Catalog-wide user properties.
Class Method Summary collapse
-
.all ⇒ Array<EventDefinition>
Frozen array of all registered definitions.
-
.clear! ⇒ void
Reset the registry.
-
.defined?(name) ⇒ Boolean
Whether an event with the given name is registered.
- .lookup(name) ⇒ EventDefinition?
-
.register(definition) ⇒ EventDefinition
Register a new EventDefinition in the catalog.
-
.register_user_property(name, type) ⇒ Symbol
Register a catalog-wide user property.
Class Attribute Details
.user_properties ⇒ Hash{Symbol => Symbol} (readonly)
Returns catalog-wide user properties.
31 32 33 |
# File 'lib/track_relay/catalog.rb', line 31 def user_properties @user_properties end |
Class Method Details
.all ⇒ Array<EventDefinition>
Returns frozen array of all registered definitions.
72 73 74 |
# File 'lib/track_relay/catalog.rb', line 72 def all @definitions.values.freeze end |
.clear! ⇒ void
This method returns an undefined value.
Reset the registry. Intended for test isolation; do not call in production code.
80 81 82 83 |
# File 'lib/track_relay/catalog.rb', line 80 def clear! @definitions = {} @user_properties = {} end |
.defined?(name) ⇒ Boolean
Returns whether an event with the given name is registered.
66 67 68 |
# File 'lib/track_relay/catalog.rb', line 66 def defined?(name) @definitions.key?(name) end |
.lookup(name) ⇒ EventDefinition?
59 60 61 |
# File 'lib/track_relay/catalog.rb', line 59 def lookup(name) @definitions[name] end |
.register(definition) ⇒ EventDefinition
Register a new EventDefinition in the catalog.
40 41 42 43 44 45 46 |
# File 'lib/track_relay/catalog.rb', line 40 def register(definition) if @definitions.key?(definition.name) raise CatalogError, "Event #{definition.name.inspect} is already registered. Call TrackRelay::Catalog.clear! before re-registering (e.g. in tests)." end @definitions[definition.name] = definition end |
.register_user_property(name, type) ⇒ Symbol
Register a catalog-wide user property.
53 54 55 |
# File 'lib/track_relay/catalog.rb', line 53 def register_user_property(name, type) @user_properties[name] = type end |