class Redoxed::HookManager
Constants
- Events
- RegisteredHook
RegisteredHook
is a container for aHook
instance
Attributes
registered_hooks[R]
Public Class Methods
from_config(cfg)
click to toggle source
# File lib/redoxed/hook.rb, line 4 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
new()
click to toggle source
# File lib/redoxed/hook.rb, line 30 def initialize @registered_hooks = Hash.new { |h, k| h[k] = [] } end
Public Instance Methods
handle(event, ctx_params = {})
click to toggle source
# File lib/redoxed/hook.rb, line 53 def handle(event, ctx_params = {}) ctx = HookContext.new ctx_params ctx.event = event @registered_hooks[event].each do |r_hook| begin r_hook.hook.run_hook ctx rescue StandardError => e Redoxed.logger.error "Hook #{r_hook.name} (#{r_hook.hook}) failed " \ "(#{e.inspect}) for event #{event.inspect}" end end end
register(event, name, hook_type, cfg)
click to toggle source
# File lib/redoxed/hook.rb, line 34 def register(event, name, hook_type, cfg) unless Events.include? event raise ArgumentError, "unknown event #{event}, available: #{Events.join ','}" end Redoxed.mgr.add_hook(hook_type) || raise("cannot load hook '#{hook_type}', not found") begin hook = Redoxed.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) Redoxed.logger.debug "Hook #{name.inspect} registered #{hook.class} for event #{event.inspect}" end