Sha256: 726f6742e322c3456b94b4aa4e90bf65907a49af8c8a4c135a9468d174ce2250
Contents?: true
Size: 907 Bytes
Versions: 2
Compression:
Stored size: 907 Bytes
Contents
module Interactor module Organizer def self.included(base) base.class_eval do include Interactor extend ClassMethods include InstanceMethods end end module ClassMethods def interactors @interactors ||= [] end def organize(*interactors) @interactors = interactors.flatten end end module InstanceMethods def interactors self.class.interactors end def perform interactors.each do |interactor| begin instance = interactor.perform(context) rescue rollback raise end rollback && break if failure? performed << instance end end def rollback performed.reverse_each(&:rollback) end def performed @performed ||= [] end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
interactor-2.1.1 | lib/interactor/organizer.rb |
interactor-2.1.0 | lib/interactor/organizer.rb |