class Redwood::HookManager

Attributes

tags[R]

Public Class Methods

new(dir) click to toggle source
# File lib/sup/hook.rb, line 64
def initialize dir
  @dir = dir
  @hooks = {}
  @descs = {}
  @contexts = {}
  @tags = {}

  Dir.mkdir dir unless File.exists? dir
end

Public Instance Methods

clear() click to toggle source
# File lib/sup/hook.rb, line 115
def clear; @hooks.clear; end
enabled?(name;) click to toggle source
# File lib/sup/hook.rb, line 113
def enabled? name; !hook_for(name).nil? end
print_hooks(f=$stdout) click to toggle source
register(name, desc) click to toggle source
# File lib/sup/hook.rb, line 93
def register name, desc
  @descs[name] = desc
end
run(name, locals={}) click to toggle source
# File lib/sup/hook.rb, line 76
def run name, locals={}
  hook = hook_for(name) or return
  context = @contexts[hook] ||= HookContext.new(name)

  result = nil
  fn = fn_for name
  begin
    result = context.__run hook, fn, locals
  rescue Exception => e
    log "error running #{fn}: #{e.message}"
    log e.backtrace.join("\n")
    @hooks[name] = nil # disable it
    BufferManager.flash "Error running hook: #{e.message}" if BufferManager.instantiated?
  end
  result
end