module BraceComb::Helper::ClassMethods

Public Instance Methods

declare_dependency(options = {}) click to toggle source

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

# 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_value() click to toggle source
# 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() click to toggle source
# File lib/brace_comb/dependency_helper.rb, line 41
def dependency_model
  ::BraceComb.dependency_model.constantize
end
set_dependency_mapping(value) click to toggle source
# File lib/brace_comb/dependency_helper.rb, line 37
def set_dependency_mapping(value)
  dependency_model.instance_variable_set(:@dependency_mapping, value)
end