Class: SmartCore::Container

Inherits:
Object
  • Object
show all
Includes:
DefinitionDSL
Defined in:
lib/smart_core/container.rb,
lib/smart_core/container/errors.rb,
lib/smart_core/container/definition_dsl.rb

Overview

Since:

  • 0.1.0

Defined Under Namespace

Modules: DefinitionDSL, DependencyCompatability, DependencyResolver, Entities, KeyGuard, Mixin, RegistryBuilder Classes: ArbitaryLock, Registry

Constant Summary collapse

Error =

Since:

  • 0.7.0

Class.new(SmartCore::Error)
ArgumentError =

Since:

  • 0.7.0

Class.new(SmartCore::ArgumentError)
IncompatibleEntityNameError =

Since:

  • 0.7.0

Class.new(ArgumentError)
FrozenRegistryError =

See Also:

Since:

  • 0.7.0

Class.new(SmartCore::FrozenError)
NonexistentEntityError =

See Also:

Since:

  • 0.7.0

Class.new(Error)
DependencyOverNamespaceOverlapError =
Class.new(Error)
NamespaceOverDependencyOverlapError =
Class.new(Error)

Instance Method Summary collapse

Methods included from DefinitionDSL

included

Constructor Details

#initializevoid

Since:

  • 0.1.0



24
25
26
27
# File 'lib/smart_core/container.rb', line 24

def initialize
  build_registry!
  @access_lock = ArbitaryLock.new
end

Instance Method Details

#freeze!void

This method returns an undefined value.

Since:

  • 0.1.0



62
63
64
# File 'lib/smart_core/container.rb', line 62

def freeze!
  thread_safe { registry.freeze! }
end

#frozen?Boolean

Returns:

  • (Boolean)

Since:

  • 0.1.0



70
71
72
# File 'lib/smart_core/container.rb', line 70

def frozen?
  thread_safe { registry.frozen? }
end

#hash_tree(resolve_dependencies: false) ⇒ Hash<String|Symbol,SmartCore::Container::Entities::Base|Any> Also known as: to_h, to_hash

Returns:

Since:

  • 0.1.0



86
87
88
# File 'lib/smart_core/container.rb', line 86

def hash_tree(resolve_dependencies: false)
  thread_safe { registry.hash_tree(resolve_dependencies: resolve_dependencies) }
end

#namespace(namespace_name, &dependencies_definition) ⇒ void

This method returns an undefined value.

Parameters:

  • namespace_name (String, Symbol)
  • dependencies_definition (Block)

Since:

  • 0.1.0



45
46
47
# File 'lib/smart_core/container.rb', line 45

def namespace(namespace_name, &dependencies_definition)
  thread_safe { registry.register_namespace(namespace_name, &dependencies_definition) }
end

#register(dependency_name, &dependency_definition) ⇒ void

This method returns an undefined value.

Parameters:

  • dependency_name (String, Symbol)
  • dependency_definition (Block)

Since:

  • 0.1.0



35
36
37
# File 'lib/smart_core/container.rb', line 35

def register(dependency_name, &dependency_definition)
  thread_safe { registry.register_dependency(dependency_name, &dependency_definition) }
end

#reload!void

This method returns an undefined value.

Since:

  • 0.1.0



78
79
80
# File 'lib/smart_core/container.rb', line 78

def reload!
  thread_safe { build_registry! }
end

#resolve(dependency_path) ⇒ Any

Parameters:

  • dependency_path (String, Symbol)

Returns:

  • (Any)

Since:

  • 0.1.0



54
55
56
# File 'lib/smart_core/container.rb', line 54

def resolve(dependency_path)
  thread_safe { DependencyResolver.resolve(registry, dependency_path) }
end