Class: ArchUnit::Layers::FluentApi::LayeredArchitecture

Inherits:
Object
  • Object
show all
Includes:
Common::FluentApi::Checkable, LayeredArchitectureValues
Defined in:
lib/archunit/layers/fluentapi/layered_architecture.rb

Overview

Immutable, executable named-layer dependency policy.

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Common::FluentApi::Checkable

#check

Constructor Details

#initialize(project_locator: nil, layer_definitions: [], allowed_dependencies: {}, forbidden_dependencies: {}) ⇒ LayeredArchitecture

Returns a new instance of LayeredArchitecture.



26
27
28
29
30
31
32
33
34
35
# File 'lib/archunit/layers/fluentapi/layered_architecture.rb', line 26

def initialize(
  project_locator: nil, layer_definitions: [],
  allowed_dependencies: {}, forbidden_dependencies: {}
)
  @project_locator = immutable_project_locator(project_locator)
  @layer_definitions = immutable_layer_definitions(layer_definitions)
  @allowed_dependencies = immutable_dependency_map(allowed_dependencies)
  @forbidden_dependencies = immutable_dependency_map(forbidden_dependencies)
  freeze
end

Instance Attribute Details

#allowed_dependenciesObject (readonly)

Returns the value of attribute allowed_dependencies.



23
24
25
# File 'lib/archunit/layers/fluentapi/layered_architecture.rb', line 23

def allowed_dependencies
  @allowed_dependencies
end

#forbidden_dependenciesObject (readonly)

Returns the value of attribute forbidden_dependencies.



23
24
25
# File 'lib/archunit/layers/fluentapi/layered_architecture.rb', line 23

def forbidden_dependencies
  @forbidden_dependencies
end

#layer_definitionsObject (readonly)

Returns the value of attribute layer_definitions.



23
24
25
# File 'lib/archunit/layers/fluentapi/layered_architecture.rb', line 23

def layer_definitions
  @layer_definitions
end

#project_locatorObject (readonly)

Returns the value of attribute project_locator.



23
24
25
# File 'lib/archunit/layers/fluentapi/layered_architecture.rb', line 23

def project_locator
  @project_locator
end

Instance Method Details

#layer(name) ⇒ Object



37
38
39
# File 'lib/archunit/layers/fluentapi/layered_architecture.rb', line 37

def layer(name)
  LayerDefinitionBuilder.new(self, validated_layer_name(name))
end

#where_layer(name) ⇒ Object



41
42
43
44
45
# File 'lib/archunit/layers/fluentapi/layered_architecture.rb', line 41

def where_layer(name)
  name = validated_layer_name(name)
  ensure_defined_layer!(name)
  LayerDependencyRuleBuilder.new(self, name)
end