Bootstraping — IoC 0.0.15 documentation

### Navigation

- index
- next |
- previous |
- IoC 0.0.15 documentation »

# Bootstraping

Here a quick exemple on how to use the ioc to initialize a project.

First, create a `start.py` file with the following code.

    import sys, logging, optparse

    import ioc

    def main():
        parser = optparse.OptionParser()
        parser.add_option("-e", "--env", dest="env", help="Define the environment", default='dev')
        parser.add_option("-d", "--debug", dest="debug", action="store_true", default=False)

        options, args = parser.parse_args()

        if options.debug:
            logging.basicConfig(level=logging.DEBUG)

        container = ioc.build([
            'config/services.yml',
            'config/parameters_%s.yml' % options.env,
        ])

        ## adapt this line depends on your need
        container.get('myservice').start()

    if __name__ == "__main__":
        main()

Now you can create a `services.yml` containing services definitions:

    parameters:
        app_name: My App

    services:
        my.service:
            class: module.ClassName
            arg: [arg1, @my.second.service]
            kwargs:
                api_key:  '%external.service.api_key%'
                app_name: '%app.name%'

        my.second.service:
            class: logging.getLogger
            arguments:
                - 'logger_name'

If you need to have different configurations, another files can be defined. The switch will be done by the `start.py` script with the `env` option.

    # configuration parameters_prod.yml
    parameters:
        external.service.api_key: XXXXXX

    # configuration parameters_dev.yml
    parameters:
        external.service.api_key: YYYYYY

The project can be started by using:

    python start.py -e prod

### Navigation

- index
- next |
- previous |
- IoC 0.0.15 documentation »