class Oxidized::HookManager
Constants
- EVENTS
- HookContext
-
HookContext
is passed to each hook. It can contain anything related to the event in question. At least it contains the event name The argument keyword_init: true is needed for ruby < 3.2 and can be dropped with the support of ruby 3.1 - RegisteredHook
-
RegisteredHook
is a container for aHook
instance
Attributes
Public Class Methods
Source
# File lib/oxidized/hook.rb, line 6 def from_config(cfg) mgr = new cfg.hooks.each do |name, h_cfg| h_cfg.events.each do |event| mgr.register event.to_sym, name, h_cfg.type, h_cfg end end mgr end
Source
# File lib/oxidized/hook.rb, line 34 def initialize @registered_hooks = Hash.new { |h, k| h[k] = [] } end
Public Instance Methods
Source
# File lib/oxidized/hook.rb, line 57 def handle(event, ctx_params = {}) ctx = HookContext.new ctx_params ctx.event = event @registered_hooks[event].each do |r_hook| r_hook.hook.run_hook ctx rescue StandardError => e logger.error "Hook #{r_hook.name} (#{r_hook.hook}) failed " \ "(#{e.inspect}) for event #{event.inspect}" end end
Source
# File lib/oxidized/hook.rb, line 38 def register(event, name, hook_type, cfg) unless EVENTS.include? event raise ArgumentError, "unknown event #{event}, available: #{EVENTS.join ','}" end Oxidized.mgr.add_hook(hook_type) || raise("cannot load hook '#{hook_type}', not found") begin hook = Oxidized.mgr.hook.fetch(hook_type).new rescue KeyError raise KeyError, "cannot find hook #{hook_type.inspect}" end hook.cfg = cfg @registered_hooks[event] << RegisteredHook.new(name, hook) logger.debug "Hook #{name.inspect} registered #{hook.class} for event #{event.inspect}" end