class SmartCore::Container
@api public @since 0.7.0
Constants
- ArgumentError
@api public @since 0.7.0
- DependencyOverNamespaceOverlapError
@see
SmartCore::Container::DependencyCompatability::General
@seeSmartCore::Container::DependencyCompatability::Definition
@seeSmartCore::Container::DependencyCompatability::Registry
@api public @since 0.7.0
- Error
@api public @since 0.7.0
- FetchError
@api public @since 0.8.0
- FrozenRegistryError
@see
SmartCore::Container::Registry
@api public @since 0.7.0
- IncompatibleEntityNameError
@api public @since 0.7.0
- NamespaceOverDependencyOverlapError
@see
SmartCore::Container::DependencyCompatability::General
@seeSmartCore::Container::DependencyCompatability::Definition
@seeSmartCore::Container::DependencyCompatability::Registry
@api public @since 0.7.0
Attributes
@return [SmartCore::Container::Registry]
@api private @since 0.7.0
Public Class Methods
@return [void]
@api public @since 0.7.0
# File lib/smart_core/container.rb, line 30 def initialize build_registry! @access_lock = ArbitaryLock.new end
Public Instance Methods
@param dependency_path [String, Symbol] @return [Any]
@api public @since 0.8.0
# File lib/smart_core/container.rb, line 71 def fetch(dependency_path) thread_safe { DependencyResolver.fetch(self, dependency_path) } end
@return [void]
@api public @since 0.7.0
# File lib/smart_core/container.rb, line 79 def freeze! thread_safe { registry.freeze! } end
@return [Boolean]
@api public @since 0.7.0
# File lib/smart_core/container.rb, line 87 def frozen? thread_safe { registry.frozen? } end
@option resolve_dependencies [Boolean] @return [Hash<String|Symbol,SmartCore::Container::Entities::Base|Any>]
@api public @since 0.7.0
# File lib/smart_core/container.rb, line 104 def hash_tree(resolve_dependencies: false) thread_safe { registry.hash_tree(resolve_dependencies: resolve_dependencies) } end
@param namespace_name [String, Symbol] @param dependencies_definition [Block] @return [void]
@api public @since 0.7.0
# File lib/smart_core/container.rb, line 51 def namespace(namespace_name, &dependencies_definition) thread_safe { registry.register_namespace(namespace_name, &dependencies_definition) } end
@param dependency_name [String, Symbol] @param dependency_definition [Block] @return [void]
@api public @sicne 0.7.0
# File lib/smart_core/container.rb, line 41 def register(dependency_name, &dependency_definition) thread_safe { registry.register_dependency(dependency_name, &dependency_definition) } end
@return [void]
@api public @since 0.7.0
# File lib/smart_core/container.rb, line 95 def reload! thread_safe { build_registry! } end
@param dependency_path [String, Symbol] @return [Any]
@api public @since 0.7.0 @version 0.8.0
# File lib/smart_core/container.rb, line 61 def resolve(dependency_path) thread_safe { DependencyResolver.resolve(self, dependency_path) } end
Private Instance Methods
@return [void]
@api private @since 0.7.0
# File lib/smart_core/container.rb, line 116 def build_registry! @registry = RegistryBuilder.build(self) end
@param block [Block] @return [Any]
@api private @since 0.7.0
# File lib/smart_core/container.rb, line 125 def thread_safe(&block) @access_lock.thread_safe(&block) end