module ServiceActor::Playable::PrependedMethods
Public Instance Methods
call()
click to toggle source
# File lib/service_actor/playable.rb, line 39 def call self.class.play_actors.each do |options| next if options[:if] && !options[:if].call(result) play_actor(options[:actor]) end rescue Failure rollback raise end
rollback()
click to toggle source
# File lib/service_actor/playable.rb, line 50 def rollback return unless @played @played.each do |actor| next unless actor.respond_to?(:rollback) actor.rollback end end
Private Instance Methods
play_actor(actor)
click to toggle source
# File lib/service_actor/playable.rb, line 62 def play_actor(actor) if actor.is_a?(Class) && actor.ancestors.include?(Actor) actor = actor.new(result) actor._call else new_result = actor.call(result) result.merge!(new_result.to_h) if new_result.respond_to?(:to_h) end (@played ||= []).unshift(actor) end