module Tzu::Hooks
Provides hooks for arbitrary pre- and post- processing within a command
Public Class Methods
included(base)
click to toggle source
# File lib/tzu/hooks.rb, line 5 def self.included(base) base.class_eval do extend ClassMethods end end
Public Instance Methods
with_hooks(*params) { |*params| ... }
click to toggle source
# File lib/tzu/hooks.rb, line 40 def with_hooks(*params, &block) result = nil run_around_hooks do run_before_hooks(*params) result = yield(*params) run_after_hooks(*params) end result end
Private Instance Methods
run_after_hooks(params)
click to toggle source
# File lib/tzu/hooks.rb, line 62 def run_after_hooks(params) run_hooks(self.class.after_hooks, params) end
run_around_hooks(&block)
click to toggle source
# File lib/tzu/hooks.rb, line 52 def run_around_hooks(&block) self.class.around_hooks.reverse.inject(block) do |chain, hook| proc { run_hook(hook, chain) } end.call end
run_before_hooks(params)
click to toggle source
# File lib/tzu/hooks.rb, line 58 def run_before_hooks(params) run_hooks(self.class.before_hooks, params) end
run_hook(hook, args)
click to toggle source
# File lib/tzu/hooks.rb, line 70 def run_hook(hook, args) hook.is_a?(Symbol) ? send(hook, args) : instance_exec(args, &hook) end
run_hooks(hooks, params)
click to toggle source
# File lib/tzu/hooks.rb, line 66 def run_hooks(hooks, params) hooks.each { |hook| run_hook(hook, params) } end