Class: Synapse::Configuration::DefinitionBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/synapse/configuration/definition_builder.rb

Overview

DSL for building service definitions

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(container, id = nil) ⇒ undefined

Parameters:

  • container (Container)
  • id (Symbol) (defaults to: nil)


24
25
26
27
28
29
30
31
32
# File 'lib/synapse/configuration/definition_builder.rb', line 24

def initialize(container, id = nil)
  @container = container
  @prototype = false
  @tags = Set.new

  populate_defaults

  @id = id.to_sym if id
end

Instance Attribute Details

#idSymbol (readonly)

Returns:

  • (Symbol)


6
7
8
# File 'lib/synapse/configuration/definition_builder.rb', line 6

def id
  @id
end

Class Method Details

.build(container, id = nil, &block) {|DefinitionBuilder| ... } ⇒ undefined

Parameters:

  • container (Container)
  • id (Symbol) (defaults to: nil)
  • block (Proc)

Yields:

Returns:

  • (undefined)


13
14
15
16
17
18
19
# File 'lib/synapse/configuration/definition_builder.rb', line 13

def self.build(container, id = nil, &block)
  builder = new container, id
  builder.instance_exec &block if block
  builder.register_definition

  builder.id
end

Instance Method Details

#anonymousundefined

Returns:

  • (undefined)


43
44
45
# File 'lib/synapse/configuration/definition_builder.rb', line 43

def anonymous
  identified_by SecureRandom.hex 8
end

#as_prototypeundefined

Returns:

  • (undefined)


70
71
72
# File 'lib/synapse/configuration/definition_builder.rb', line 70

def as_prototype
  @prototype = true
end

#as_singletonundefined

Returns:

  • (undefined)


76
77
78
# File 'lib/synapse/configuration/definition_builder.rb', line 76

def as_singleton
  @prototype = false
end

#build_composite(builder_type = DefinitionBuilder, &block) ⇒ Symbol

Convenience method for building composite services

The given block will be executed in the context of the definition builder

Parameters:

  • builder_type (Class) (defaults to: DefinitionBuilder)

    Defaults to DefinitionBuilder

  • block (Proc)

Returns:

  • (Symbol)

    The identifier of the newly created service



104
105
106
# File 'lib/synapse/configuration/definition_builder.rb', line 104

def build_composite(builder_type = DefinitionBuilder, &block)
  builder_type.build @container, &block
end

#build_definitionDefinition

Returns:



109
110
111
# File 'lib/synapse/configuration/definition_builder.rb', line 109

def build_definition
  Definition.new @tags, @prototype, @factory, @instance
end

#clear_tagsundefined

Returns:

  • (undefined)


49
50
51
# File 'lib/synapse/configuration/definition_builder.rb', line 49

def clear_tags
  @tags = Set.new
end

#identified_by(id) ⇒ undefined

Parameters:

  • id (Symbol)

Returns:

  • (undefined)


37
38
39
# File 'lib/synapse/configuration/definition_builder.rb', line 37

def identified_by(id)
  @id = id.to_sym
end

#register_definitionundefined

Returns:

  • (undefined)


114
115
116
117
118
119
120
# File 'lib/synapse/configuration/definition_builder.rb', line 114

def register_definition
  unless @id
    raise ConfigurationError, 'No identifier set for the definition'
  end

  @container.register @id, build_definition
end

#replace_tags(*tags) ⇒ undefined

Parameters:

  • tags (Symbol...)

Returns:

  • (undefined)


56
57
58
59
# File 'lib/synapse/configuration/definition_builder.rb', line 56

def replace_tags(*tags)
  clear_tags
  tag *tags
end

#tag(*tags) ⇒ undefined

Parameters:

  • tags (Symbol...)

Returns:

  • (undefined)


64
65
66
# File 'lib/synapse/configuration/definition_builder.rb', line 64

def tag(*tags)
  @tags.merge tags.flatten
end

#use_factory(&factory) ⇒ undefined

Parameters:

  • factory (Proc)

Returns:

  • (undefined)


83
84
85
86
87
# File 'lib/synapse/configuration/definition_builder.rb', line 83

def use_factory(&factory)
  @factory = proc do
    instance_exec(&factory)
  end
end

#use_instance(instance) ⇒ undefined

Parameters:

  • instance (Object)

Returns:

  • (undefined)


92
93
94
# File 'lib/synapse/configuration/definition_builder.rb', line 92

def use_instance(instance)
  @instance = instance
end