Class: BlastRadius::DependencyTree

Inherits:
Object
  • Object
show all
Defined in:
lib/blast_radius/dependency_tree.rb

Instance Method Summary collapse

Constructor Details

#initialize(configuration = nil) ⇒ DependencyTree

Returns a new instance of DependencyTree.



5
6
7
8
# File 'lib/blast_radius/dependency_tree.rb', line 5

def initialize(configuration = nil)
  @configuration = configuration || BlastRadius.configuration
  @analyzer = Analyzer.new
end

Instance Method Details

#build(root_model, options = {}) ⇒ Node

Build dependency tree from a root model

Parameters:

  • root_model (Class)

    root ActiveRecord model class

  • options (Hash) (defaults to: {})

    options

    • :max_depth [Integer] maximum depth (default: from configuration)
    • :include_nullify [Boolean] include nullify associations (default: from configuration)
    • :include_restrict [Boolean] include restrict associations (default: from configuration)

Returns:

  • (Node)

    root node of dependency tree



18
19
20
21
22
23
24
25
26
# File 'lib/blast_radius/dependency_tree.rb', line 18

def build(root_model, options = {})
  max_depth = options[:max_depth] || @configuration.max_depth
  include_nullify = options.fetch(:include_nullify, @configuration.include_nullify)
  include_restrict = options.fetch(:include_restrict, @configuration.include_restrict)

  root_node = Node.new(root_model, depth: 0)
  build_tree(root_node, max_depth, include_nullify, include_restrict)
  root_node
end