module Cooperator
Constants
- VERSION
Public Class Methods
included(base)
click to toggle source
# File lib/cooperator.rb, line 122 def self.included(base) base.include ClassMethods end
new(context = Context.new)
click to toggle source
# File lib/cooperator.rb, line 86 def initialize(context = Context.new) @_context = if context.is_a? Context context else Context.new context end end
prepended(base)
click to toggle source
# File lib/cooperator.rb, line 118 def self.prepended(base) base.extend ClassMethods end
Public Instance Methods
commit(properties = {})
click to toggle source
# File lib/cooperator.rb, line 112 def commit(properties = {}) properties.each do |key, value| context[key] = value end end
context()
click to toggle source
# File lib/cooperator.rb, line 82 def context @_context end
cooperate(*actions)
click to toggle source
# File lib/cooperator.rb, line 94 def cooperate(*actions) done = [] actions.each do |action| action.perform context break if context.failure? done << action end if context.failure? done.reverse.each do |action| action.rollback context end end end
Private Instance Methods
failure!(messages = {})
click to toggle source
# File lib/cooperator.rb, line 137 def failure!(messages = {}) context.failure! messages throw :_finish end
failure?()
click to toggle source
# File lib/cooperator.rb, line 142 def failure? context.failure? end
include?(property)
click to toggle source
# File lib/cooperator.rb, line 146 def include?(property) context.include?(property) end
success!()
click to toggle source
# File lib/cooperator.rb, line 128 def success! context.success! throw :_finish end
success?()
click to toggle source
# File lib/cooperator.rb, line 133 def success? context.success? end