module BraceComb::Model::InstanceMethods
Public Instance Methods
execute_after_callbacks(after_callbacks)
click to toggle source
# File lib/brace_comb/dependency_model.rb, line 30 def execute_after_callbacks(after_callbacks) return unless after_callbacks after_callbacks.map do |after_callback| execute_callback(after_callback) end end
execute_before_callbacks(before_callbacks)
click to toggle source
# File lib/brace_comb/dependency_model.rb, line 47 def execute_before_callbacks(before_callbacks) return unless before_callbacks before_callbacks.each do |before_callback| result = execute_callback(before_callback) raise BraceComb::Exceptions::CallbackFailure.new unless result end end
execute_callback(callback)
click to toggle source
Callbacks can be procs or methods
# File lib/brace_comb/dependency_model.rb, line 56 def execute_callback(callback) if callback.respond_to?(:call) callback.call(self) else __send__(callback) end end
execute_resolver(resolver, args)
click to toggle source
Resolver can be a proc or method
# File lib/brace_comb/dependency_model.rb, line 38 def execute_resolver(resolver, args) return resolver.call(self) if resolver.respond_to?(:call) if method(resolver).arity.zero? __send__(resolver) else __send__(resolver, args) end end
resolve(args = nil)
click to toggle source
returns false if before callbacks return false throws an exception if before, after callbacks or resolver raises an exception rolls back the transaction if before callbacks return false or if any exception is raised
# File lib/brace_comb/dependency_model.rb, line 23 def resolve(args = nil) resolve!(args) true rescue BraceComb::Exceptions::CallbackFailure false end
resolve!(args = nil)
click to toggle source
throws an exception if before callbacks return false throws an exception if before, after callbacks or resolver raises an exception rolls back the transaction if before callbacks return false or if any exception is raised
# File lib/brace_comb/dependency_model.rb, line 10 def resolve!(args = nil) dependency_mapping = self.class. instance_variable_get(:@dependency_mapping)[self.dependency_type.to_sym] ActiveRecord::Base.transaction do execute_before_callbacks(dependency_mapping[:before_resolution]) execute_resolver(dependency_mapping[:resolver], args) execute_after_callbacks(dependency_mapping[:after_resolution]) end end