module CommandServiceObject::Hooks::InstanceMethods

Attributes

_called_micros[RW]

Public Instance Methods

rollback_micros() click to toggle source
# File lib/command_service_object/hooks.rb, line 25
def rollback_micros
  _called_micros.reverse_each(&:rollback)
end
setup_micros(micros) click to toggle source
# File lib/command_service_object/hooks.rb, line 29
def setup_micros(micros)
  micros.each do |micro|
    method_name = micro.name.split('::').last.underscore

    # unrollable micros
    define_singleton_method("#{method_name}!") do |cmd|
      micro.new(cmd).call
    end

    # rollable micros
    define_singleton_method(method_name) do |cmd|
      obj = micro.new(cmd)
      result = obj.call

      _called_micros << obj
      result
    end
  end
end