Module: BraceComb::Model::InstanceMethods
- Defined in:
- lib/brace_comb/dependency_model.rb
Instance Method Summary collapse
- #execute_after_callbacks(after_callbacks) ⇒ Object
- #execute_before_callbacks(before_callbacks) ⇒ Object
-
#execute_callback(callback) ⇒ Object
Callbacks can be procs or methods.
-
#execute_resolver(resolver, args) ⇒ Object
Resolver can be a proc or method.
-
#resolve(args = nil) ⇒ Object
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.
-
#resolve!(args = nil) ⇒ Object
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.
Instance Method Details
#execute_after_callbacks(after_callbacks) ⇒ Object
29 30 31 32 33 34 |
# File 'lib/brace_comb/dependency_model.rb', line 29 def execute_after_callbacks(after_callbacks) return unless after_callbacks after_callbacks.each do |after_callback| execute_callback(after_callback) end end |
#execute_before_callbacks(before_callbacks) ⇒ Object
46 47 48 49 50 51 52 |
# File 'lib/brace_comb/dependency_model.rb', line 46 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) ⇒ Object
Callbacks can be procs or methods
55 56 57 58 59 60 61 |
# File 'lib/brace_comb/dependency_model.rb', line 55 def execute_callback(callback) if callback.respond_to?(:call) callback.call(self) else __send__(callback) end end |
#execute_resolver(resolver, args) ⇒ Object
Resolver can be a proc or method
37 38 39 40 41 42 43 44 |
# File 'lib/brace_comb/dependency_model.rb', line 37 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) ⇒ Object
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
22 23 24 25 26 27 |
# File 'lib/brace_comb/dependency_model.rb', line 22 def resolve(args = nil) resolve!(args) true rescue BraceComb::Exceptions::CallbackFailure false end |
#resolve!(args = nil) ⇒ Object
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
9 10 11 12 13 14 15 16 17 |
# File 'lib/brace_comb/dependency_model.rb', line 9 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 |