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