Module: BraceComb::Helper::ClassMethods
- Defined in:
- lib/brace_comb/dependency_helper.rb
Instance Method Summary collapse
-
#declare_dependency(options = {}) ⇒ Object
declare_dependency type: :shopping resolver: :shopping_completed before_resolution: [:completed_status?] after_resolution: :complete_job, Proc.new {} Options: resolver: Methods or procs that can mark the dependency as resolved before_resolution: Checks that can be performed before a dependency is resolved.
- #dependency_mapping_value ⇒ Object
- #dependency_model ⇒ Object
- #set_dependency_mapping(value) ⇒ Object
Instance Method Details
#declare_dependency(options = {}) ⇒ Object
declare_dependency
type: :shopping
resolver: :shopping_completed
before_resolution: [:completed_status?]
after_resolution: :complete_job, Proc.new {}
Options: resolver: Methods or procs that can mark the dependency as resolved before_resolution: Checks that can be performed before a dependency is resolved. If any of these return false then the dependency resolution will result in a false or exception. after_resolution: if the dependency resolution succeeds, each of these methods will be executed one by one. All the subsequent after_resolution hooks will not be executed if any of the predecessor after_resolution hook throws an exception. However, this will not make a difference to the resolution status of the dependency itself
18 19 20 21 22 23 24 25 26 |
# File 'lib/brace_comb/dependency_helper.rb', line 18 def declare_dependency( = {}) dependency_mapping = dependency_mapping_value dependency_mapping[[:type]] = .slice( :resolver, :before_resolution, :after_resolution ) set_dependency_mapping(dependency_mapping) end |
#dependency_mapping_value ⇒ Object
28 29 30 31 32 33 34 35 |
# File 'lib/brace_comb/dependency_helper.rb', line 28 def dependency_mapping_value klass = dependency_model dependency_mapping = klass.instance_variable_get(:@dependency_mapping) value = dependency_mapping || {} value.tap do |dependency_mapping_value| klass.instance_variable_set(:@dependency_mapping, dependency_mapping_value) end end |
#dependency_model ⇒ Object
41 42 43 |
# File 'lib/brace_comb/dependency_helper.rb', line 41 def dependency_model ::BraceComb.dependency_model.constantize end |
#set_dependency_mapping(value) ⇒ Object
37 38 39 |
# File 'lib/brace_comb/dependency_helper.rb', line 37 def set_dependency_mapping(value) dependency_model.instance_variable_set(:@dependency_mapping, value) end |