Class: Synapse::Configuration::DefinitionBuilder
- Inherits:
-
Object
- Object
- Synapse::Configuration::DefinitionBuilder
show all
- Defined in:
- lib/synapse/configuration/definition_builder.rb
Overview
DSL for building service definitions
Direct Known Subclasses
AggregateSnapshotTakerDefinitionBuilder, CommandGatewayDefinitionBuilder, ContainerResourceInjectorDefinitionBuilder, ConverterFactoryDefinitionBuilder, GenericProcessFactoryDefinitionBuilder, IntervalSnapshotPolicyDefinitionBuilder, LockingRepositoryDefinitionBuilder, MappingProcessManagerDefinitionBuilder, SerializerDefinitionBuilder, SimpleCommandBusDefinitionBuilder, SimpleEventBusDefinitionBuilder, UnitOfWorkFactoryDefinitionBuilder, UpcasterChainDefinitionBuilder
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(container, id = nil) ⇒ undefined
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
#id ⇒ 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
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
#anonymous ⇒ undefined
43
44
45
|
# File 'lib/synapse/configuration/definition_builder.rb', line 43
def anonymous
identified_by SecureRandom.hex 8
end
|
#as_prototype ⇒ undefined
70
71
72
|
# File 'lib/synapse/configuration/definition_builder.rb', line 70
def as_prototype
@prototype = true
end
|
#as_singleton ⇒ 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
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
|
109
110
111
|
# File 'lib/synapse/configuration/definition_builder.rb', line 109
def build_definition
Definition.new @tags, @prototype, @factory, @instance
end
|
49
50
51
|
# File 'lib/synapse/configuration/definition_builder.rb', line 49
def clear_tags
@tags = Set.new
end
|
#identified_by(id) ⇒ undefined
37
38
39
|
# File 'lib/synapse/configuration/definition_builder.rb', line 37
def identified_by(id)
@id = id.to_sym
end
|
#register_definition ⇒ 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
|
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
64
65
66
|
# File 'lib/synapse/configuration/definition_builder.rb', line 64
def tag(*tags)
@tags.merge tags.flatten
end
|
#use_factory(&factory) ⇒ 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
92
93
94
|
# File 'lib/synapse/configuration/definition_builder.rb', line 92
def use_instance(instance)
@instance = instance
end
|