class Fabrique::BeanDefinitionRegistry

Public Class Methods

new(definitions) click to toggle source
# File lib/fabrique/bean_definition_registry.rb, line 11
def initialize(definitions)
  @defs = definitions.map { |d| d.is_a?(BeanDefinition) ? d : BeanDefinition.new(d) }
end

Public Instance Methods

get_definition(bean_name) click to toggle source
# File lib/fabrique/bean_definition_registry.rb, line 15
def get_definition(bean_name)
  @defs.detect { |d| d.id == bean_name } or raise MissingBeanError.new("missing bean #{bean_name.inspect}")
end
get_definitions() click to toggle source
# File lib/fabrique/bean_definition_registry.rb, line 19
def get_definitions
  @defs
end
get_gem_definitions() click to toggle source
# File lib/fabrique/bean_definition_registry.rb, line 23
def get_gem_definitions
  @defs.collect(&:gem).compact
end
validate!() click to toggle source
# File lib/fabrique/bean_definition_registry.rb, line 27
def validate!
  tsort
rescue TSort::Cyclic => e
  raise CyclicBeanDependencyError.new(e.message.gsub(/topological sort failed/, "cyclic bean dependency error"))
end

Private Instance Methods

tsort_each_child(node, &block) click to toggle source
# File lib/fabrique/bean_definition_registry.rb, line 35
def tsort_each_child(node, &block)
  defn = get_definition(node)
  deps = defn.dependencies
  deps.map { |dep| dep.bean }.each(&block)
end
tsort_each_node() { |id| ... } click to toggle source
# File lib/fabrique/bean_definition_registry.rb, line 41
def tsort_each_node
  @defs.each do |dep|
    yield dep.id
  end
end