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 = self.new container, id
  builder.instance_exec(&block) if block
  builder.register_definition

  builder.id
end

Instance Method Details

#anonymousundefined

Returns:

  • (undefined)


41
42
43
# File 'lib/synapse/configuration/definition_builder.rb', line 41

def anonymous
  identified_by SecureRandom.hex 8
end

#as_prototypeundefined

Returns:

  • (undefined)


52
53
54
# File 'lib/synapse/configuration/definition_builder.rb', line 52

def as_prototype
  @prototype = true
end

#as_singletonundefined

Returns:

  • (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

Parameters:

  • builder_type (Class) (defaults to: DefinitionBuilder)

    Defaults to DefinitionBuilder

  • block (Proc)

Returns:

  • (Symbol)

    The identifier of the newly created service



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

#build_definitionDefinition

Returns:



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

Parameters:

  • id (Symbol)

Returns:

  • (undefined)


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

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

#register_definitionundefined

Returns:

  • (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

Parameters:

  • value (Object)

Returns:

  • (Object)


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

Parameters:

  • tag (Symbol)

Returns:

  • (Array)


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

def resolve_tagged(tag)
  @container.resolve_tagged tag
end

#tag(*tags) ⇒ undefined

Parameters:

  • tags (Symbol...)

Returns:

  • (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

Parameters:

  • factory (Proc)

Returns:

  • (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

Parameters:

  • instance (Object)

Returns:

  • (undefined)


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

def use_instance(instance)
  @instance = instance
end