Module: Seams::EventRegistry
- Defined in:
- lib/seams/event_registry.rb
Overview
Tracks every event name that an engine has declared it emits, along with the engine that owns it. Acts as the single source of truth for ‘bin/rails seams:list` and prevents two engines from claiming the same event name.
Class Method Summary collapse
- .all ⇒ Object
- .emitter_of(name) ⇒ Object
- .register(name, emitted_by:) ⇒ Object
- .registered?(name) ⇒ Boolean
- .reset! ⇒ Object
Class Method Details
.all ⇒ Object
40 41 42 |
# File 'lib/seams/event_registry.rb', line 40 def all @registry.dup end |
.emitter_of(name) ⇒ Object
36 37 38 |
# File 'lib/seams/event_registry.rb', line 36 def emitter_of(name) @registry[name.to_s] end |
.register(name, emitted_by:) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/seams/event_registry.rb', line 15 def register(name, emitted_by:) Events.assert_valid_name!(name) name = name.to_s @mutex.synchronize do existing = @registry[name] if existing && existing != emitted_by raise Events::DuplicateEventError, "Event #{name.inspect} already registered by #{existing.inspect}; " \ "cannot also be registered by #{emitted_by.inspect}" end @registry[name] = emitted_by end end |
.registered?(name) ⇒ Boolean
32 33 34 |
# File 'lib/seams/event_registry.rb', line 32 def registered?(name) @registry.key?(name.to_s) end |
.reset! ⇒ Object
44 45 46 |
# File 'lib/seams/event_registry.rb', line 44 def reset! @mutex.synchronize { @registry.clear } end |