class BeetleETL::DependencyResolver
Public Class Methods
new(items)
click to toggle source
# File lib/beetle_etl/step_runner/dependency_resolver.rb, line 7 def initialize(items) @items = items check end
Public Instance Methods
resolvables(resolved)
click to toggle source
# File lib/beetle_etl/step_runner/dependency_resolver.rb, line 12 def resolvables(resolved) @items.select do |item| !resolved.include?(item.name) && all_dependencies_met?(item, resolved) end end
Private Instance Methods
all_dependencies_met?(item, resolved)
click to toggle source
# File lib/beetle_etl/step_runner/dependency_resolver.rb, line 31 def all_dependencies_met?(item, resolved) item.dependencies.empty? || item.dependencies.subset?(resolved.to_set) end
check()
click to toggle source
# File lib/beetle_etl/step_runner/dependency_resolver.rb, line 20 def check items = @items.dup resolved = [] until items.empty? resolvables = items.select { |item| all_dependencies_met?(item, resolved.map(&:name)) } raise UnsatisfiableDependenciesError if resolvables.empty? resolvables.each { |r| resolved << items.delete(r) } end end