Class: LcpRuby::Events::HandlerRegistry
- Inherits:
-
Object
- Object
- LcpRuby::Events::HandlerRegistry
- Defined in:
- lib/lcp_ruby/events/handler_registry.rb
Class Method Summary collapse
- .clear! ⇒ Object
- .discover!(base_path) ⇒ Object
- .handlers_for(model_name, event_name) ⇒ Object
- .register(model_name, event_name, handler_class) ⇒ Object
Class Method Details
.clear! ⇒ Object
37 38 39 |
# File 'lib/lcp_ruby/events/handler_registry.rb', line 37 def clear! @registry = {} end |
.discover!(base_path) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/lcp_ruby/events/handler_registry.rb', line 15 def discover!(base_path) handlers_path = File.join(base_path, "event_handlers") return unless File.directory?(handlers_path) Dir[File.join(handlers_path, "**", "*.rb")].sort.each do |file| require file relative = file.sub("#{handlers_path}/", "").sub(/\.rb$/, "") parts = relative.split("/") model_name = parts[0] class_name = "LcpRuby::HostEventHandlers::#{parts.map(&:camelize).join('::')}" begin handler_class = class_name.constantize event_name = handler_class.handles_event register(model_name, event_name, handler_class) rescue NameError, NotImplementedError => e Rails.logger.warn("[LcpRuby] Could not register event handler #{class_name}: #{e.}") end end end |
.handlers_for(model_name, event_name) ⇒ Object
5 6 7 |
# File 'lib/lcp_ruby/events/handler_registry.rb', line 5 def handlers_for(model_name, event_name) registry.fetch(model_name.to_s, {}).fetch(event_name.to_s, []) end |
.register(model_name, event_name, handler_class) ⇒ Object
9 10 11 12 13 |
# File 'lib/lcp_ruby/events/handler_registry.rb', line 9 def register(model_name, event_name, handler_class) registry[model_name.to_s] ||= {} registry[model_name.to_s][event_name.to_s] ||= [] registry[model_name.to_s][event_name.to_s] << handler_class end |