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 = 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
56
57
58
|
# File 'lib/synapse/configuration/definition_builder.rb', line 56
def as_prototype
@prototype = true
end
|
#as_singleton ⇒ undefined
62
63
64
|
# File 'lib/synapse/configuration/definition_builder.rb', line 62
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
90
91
92
|
# File 'lib/synapse/configuration/definition_builder.rb', line 90
def build_composite(builder_type = DefinitionBuilder, &block)
builder_type.build @container, &block
end
|
95
96
97
|
# File 'lib/synapse/configuration/definition_builder.rb', line 95
def build_definition
Definition.new @tags, @prototype, @factory, @instance
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
100
101
102
103
104
105
106
|
# File 'lib/synapse/configuration/definition_builder.rb', line 100
def register_definition
unless @id
raise ConfigurationError, 'No identifier set for the definition'
end
@container.register @id, build_definition
end
|
#tag(*tags) ⇒ undefined
50
51
52
|
# File 'lib/synapse/configuration/definition_builder.rb', line 50
def tag(*tags)
@tags.merge tags.flatten
end
|
#use_factory(&factory) ⇒ undefined
69
70
71
72
73
|
# File 'lib/synapse/configuration/definition_builder.rb', line 69
def use_factory(&factory)
@factory = proc do
instance_exec(&factory)
end
end
|
#use_instance(instance) ⇒ undefined
78
79
80
|
# File 'lib/synapse/configuration/definition_builder.rb', line 78
def use_instance(instance)
@instance = instance
end
|