Module: Lono::Jade::Circular

Included in:
Lono::Jade
Defined in:
lib/lono/jade/circular.rb

Instance Method Summary collapse

Instance Method Details

#check_for_circular_dependency!Object



3
4
5
6
7
8
9
10
# File 'lib/lono/jade/circular.rb', line 3

def check_for_circular_dependency!
  circular = circular_dependency?
  return unless circular

  puts "ERROR: configset circular dependency detected".color(:red)
  puts "circular dependency: #{parent_names.join(" => ")}"
  exit 1
end

#circular_dependency?Boolean

Returns:

  • (Boolean)


12
13
14
# File 'lib/lono/jade/circular.rb', line 12

def circular_dependency?
  parent_names.uniq.size != parent_names.size
end

#parent_namesObject



16
17
18
19
20
21
22
23
24
# File 'lib/lono/jade/circular.rb', line 16

def parent_names
  names = [self.name] # include initial jade name to detect circular dependency earlier
  parent = registry.parent
  while parent
    names << parent.name
    parent = parent.registry.parent
  end
  names
end