module GuidedInteractor::Hooks
Public Class Methods
included(base)
click to toggle source
# File lib/guided_interactor/hooks.rb, line 4 def self.included(base) base.class_eval do extend ClassMethods end end
Private Instance Methods
run_after_hooks()
click to toggle source
# File lib/guided_interactor/hooks.rb, line 61 def run_after_hooks run_hooks(self.class.after_hooks) end
run_around_hooks(&block)
click to toggle source
# File lib/guided_interactor/hooks.rb, line 51 def run_around_hooks(&block) self.class.around_hooks.reverse.reduce(block) do |chain, hook| proc { run_hook(hook, chain) } end.call end
run_before_hooks()
click to toggle source
# File lib/guided_interactor/hooks.rb, line 57 def run_before_hooks run_hooks(self.class.before_hooks) end
run_hook(hook, *args)
click to toggle source
# File lib/guided_interactor/hooks.rb, line 69 def run_hook(hook, *args) hook.is_a?(Symbol) ? send(hook, *args) : instance_exec(*args, &hook) end
run_hooks(hooks)
click to toggle source
# File lib/guided_interactor/hooks.rb, line 65 def run_hooks(hooks) hooks.each { |hook| run_hook(hook) } end
with_hooks() { || ... }
click to toggle source
# File lib/guided_interactor/hooks.rb, line 43 def with_hooks run_around_hooks do run_before_hooks yield run_after_hooks end end