Class: VSM::DSL::Builder

Inherits:
Object
  • Object
show all
Defined in:
lib/vsm/dsl.rb,
lib/vsm/dsl_mcp.rb

Defined Under Namespace

Classes: ChildrenBuilder

Instance Method Summary collapse

Constructor Details

#initialize(name) ⇒ Builder

Returns a new instance of Builder.



7
8
9
10
11
12
# File 'lib/vsm/dsl.rb', line 7

def initialize(name)
  @name = name
  @roles = {}
  @children = {}
  @after_build = []
end

Instance Method Details

#buildObject



29
30
31
32
33
34
35
36
37
# File 'lib/vsm/dsl.rb', line 29

def build
  # Inject governance into tool capsules if they accept it
  @children.each_value do |child|
    child.governance = @roles[:governance] if child.respond_to?(:governance=)
  end
  capsule = VSM::Capsule.new(name: @name, roles: @roles, children: @children)
  @after_build.each { _1.call(capsule) }
  capsule
end

#coordination(klass: VSM::Coordination, args: {}) ⇒ Object



16
# File 'lib/vsm/dsl.rb', line 16

def coordination(klass: VSM::Coordination, args: {}) = assign_role(:coordination, klass, args)

#governance(klass: VSM::Governance, args: {}) ⇒ Object



15
# File 'lib/vsm/dsl.rb', line 15

def governance(klass: VSM::Governance, args: {}) = assign_role(:governance, klass, args)

#identity(klass: VSM::Identity, args: {}) ⇒ Object



14
# File 'lib/vsm/dsl.rb', line 14

def identity(klass: VSM::Identity, args: {})     = assign_role(:identity, klass, args)

#intelligence(klass: VSM::Intelligence, args: {}) ⇒ Object



17
# File 'lib/vsm/dsl.rb', line 17

def intelligence(klass: VSM::Intelligence, args: {}) = assign_role(:intelligence, klass, args)

#monitoring(klass: VSM::Monitoring, args: {}) ⇒ Object



27
# File 'lib/vsm/dsl.rb', line 27

def monitoring(klass: VSM::Monitoring, args: {}) = assign_role(:monitoring, klass, args)

#operations(klass: VSM::Operations, args: {}, &blk) ⇒ Object



18
19
20
21
22
23
24
25
# File 'lib/vsm/dsl.rb', line 18

def operations(klass: VSM::Operations, args: {}, &blk)
  @roles[:operations] = instantiate(klass, args)
  if blk
    builder = ChildrenBuilder.new(self)
    builder.instance_eval(&blk)
    @children.merge!(builder.result)
  end
end