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
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 = self.new container, id
builder.instance_exec(&block) if block
builder.register_definition
builder.id
end
|
Instance Method Details
#anonymous ⇒ undefined
41
42
43
|
# File 'lib/synapse/configuration/definition_builder.rb', line 41
def anonymous
identified_by SecureRandom.hex 8
end
|
#as_prototype ⇒ undefined
52
53
54
|
# File 'lib/synapse/configuration/definition_builder.rb', line 52
def as_prototype
@prototype = true
end
|
#as_singleton ⇒ undefined
57
58
59
|
# File 'lib/synapse/configuration/definition_builder.rb', line 57
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
103
104
105
|
# File 'lib/synapse/configuration/definition_builder.rb', line 103
def build_composite(builder_type = DefinitionBuilder, &block)
builder_type.build @container, &block
end
|
108
109
110
|
# File 'lib/synapse/configuration/definition_builder.rb', line 108
def build_definition
Definition.new @tags, @prototype, @factory, @instance
end
|
#identified_by(id) ⇒ undefined
36
37
38
|
# File 'lib/synapse/configuration/definition_builder.rb', line 36
def identified_by(id)
@id = id.to_sym
end
|
#register_definition ⇒ undefined
113
114
115
116
117
118
119
|
# File 'lib/synapse/configuration/definition_builder.rb', line 113
def register_definition
unless @id
raise ConfigurationError, 'No identifier set for the definition'
end
@container.register @id, build_definition
end
|
#resolve(value, optional = false) ⇒ Object
If the given value is a symbol, it will be resolved using the container. Otherwise, it will be passed through
80
81
82
83
84
85
86
|
# File 'lib/synapse/configuration/definition_builder.rb', line 80
def resolve(value, optional = false)
if value.is_a? Symbol
@container.resolve value, optional
else
value
end
end
|
#resolve_tagged(tag) ⇒ Array
Resolves all services that have the given tag
92
93
94
|
# File 'lib/synapse/configuration/definition_builder.rb', line 92
def resolve_tagged(tag)
@container.resolve_tagged tag
end
|
#tag(*tags) ⇒ undefined
47
48
49
|
# File 'lib/synapse/configuration/definition_builder.rb', line 47
def tag(*tags)
@tags.merge tags.flatten
end
|
#use_factory(&factory) ⇒ undefined
63
64
65
66
67
|
# File 'lib/synapse/configuration/definition_builder.rb', line 63
def use_factory(&factory)
@factory = proc do
instance_exec(&factory)
end
end
|
#use_instance(instance) ⇒ undefined
71
72
73
|
# File 'lib/synapse/configuration/definition_builder.rb', line 71
def use_instance(instance)
@instance = instance
end
|