Module: BraceComb::Helper::ClassMethods

Defined in:
lib/brace_comb/dependency_helper.rb

Instance Method Summary collapse

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(options = {})
  dependency_mapping = dependency_mapping_value
  dependency_mapping[options[:type]] = options.slice(
    :resolver,
    :before_resolution,
    :after_resolution
  )
  set_dependency_mapping(dependency_mapping)
end

#dependency_mapping_valueObject



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_modelObject



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