Example #1
0
class Bootstrap(object):
    def __init__(self):
        self._config = None

    def run(self, config_file_path):
        self._load_config(config_file_path)
        self._setup_dependencies()

    def _setup_dependencies(self):
        dependency_factory = self._get_dependency_factory()
        dependencies = (
            (Dependencies.Factory, dependency_factory.factory),
            (Dependencies.Config, dependency_factory.config, inject.Scope.Transient),
            (Dependencies.DatabaseConnectionManager, dependency_factory.database_connection_manager,
             inject.Scope.Transient),
        )

        for dependency in dependencies:
            inject.provide(*dependency)

    def _get_dependency_factory(self):
        """
        Override point

        :rtype : DependencyFactory
        :return:
        """
        return DependencyFactory(self._config)

    def _load_config(self, config_file_path):
        self._config = TypedConfig()

        with open(config_file_path) as file_pointer:
            self._config.readfp(file_pointer)

    def database_connection_manager(self):
        """
        :rtype: ConnectionManager
        :return:
        """

        database_config = dict(self._config.items('database'))
        print database_config

        connection_map = DatabaseConnectionMap()
        connection_map.load_from_config(database_config['config_file'])

        return ConnectionManager(connection_map)
Example #2
0
    def _load_config(self, config_file_path):
        self._config = TypedConfig()

        with open(config_file_path) as file_pointer:
            self._config.readfp(file_pointer)