Hello everybody

I hope you will enjoy reading this proposal as much as i did writing it.

Please feel free to contribute, either with criticism or encouragements.

eZ Component: Configuration overloading, Requirements
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:Author: James Pic
:Revision: $Revision$
:Date: $Date$

Introduction
============

Description
-----------

The configuration package provides the tools to store configuration settings
for your application. Configuration options are stored on disk using INI
files or other configuration formats. The configuration package comes with
support for manipulation and storage of INI files and caching.

Enhancement #10979 is about making the configuration package able to use
several configuration directories with a merge mechanism.

Current implementation
----------------------

The configuration package does not provide any mechanism to get a final setting
value from several configuration directories.

Requirements
============

The configuration merger would take a couple of configuration objects. One
configuration object holds the final configuration values, and another one
contains the default configuration value. Each default configuration value with
is not defined in the final configuration values is copied in the final
configuration object.

Example
-------

Consider an app called myapp which i maintain. It holds *default* configuration
directory in myapp/config. With the following routes.ini file::

    [myapp.register]
    controller=myAppController
    railsRoute=register
    action=register
    template=register.ezt

Consider a project called yourproject which you maintain. It holds the *final*
configuration directory in yourproject/config. With the following routes.ini
file::

    [myapp.register]
    controller=yourProjectController

The merged configuration would look like::

    [myapp.register]
    controller=yourProjectController
    railsRoute=register
    action=register
    template=register.ezt

Note the different "controller" setting value. The *final* configuration value
took over ("overloaded") the *default* configuration value.

Design goals
============

The configuration merger should provide a method to write the merged
configurations into an arbitrary directory. For example:
yourproject/cache/config.

..
   Local Variables:
   mode: rst
   fill-column: 79
   End:
   vim: et syn=rst tw=79
-- 
Components mailing list
Components@lists.ez.no
http://lists.ez.no/mailman/listinfo/components

Reply via email to