75 lines
2.8 KiB
Markdown
Raw Permalink Normal View History

2012-03-23 16:58:05 +00:00
Configuration {#config}
=============
2012-04-11 11:43:40 +01:00
The webperl framework includes a basic configuration file reader and writer in
the form of the ConfigMicro class. The ConfigMicro class provides methods for
loading simple '.ini style' configuration files, supporting sections and key-value
pairs, eg:
[sectionA]
keyA = valueA
keyB = valueB
[sectionB]
keyC = valueC
When using the Application class as the basis of a web application, you need to
provide a configuration file (the name of which defaults to 'config/site.cfg',
but you can change this via the `config` argument to Application::new())
containing, minimally, the following:
[database]
database = DBI:mysql:DATABASE
username = USERNAME
password = PASSWORD
# Standard webperl tables
auth_methods = rev_auth_methods
auth_params = rev_auth_methods_params
blocks = rev_blocks
keys = rev_session_keys
modules = rev_modules
sessions = rev_sessions
settings = rev_settings
the `database` section must be present in the configuration at some point - you
may include other sections if you wish, but `database` must be present. The
`database` section must include the keys `database`, `username`, and `password`
providing the credentials that should be used to connect to the webapp's
database. Most of the webperl code has only been tested with MySQL, other
databases may or may not work well with it.
The `database` section should also contain the mapping from internal table
names to actual table names, often this will be a matter of sticking on a
prefix, as shown above, or possibly even straight duplication. Unfortunately
there is no support currently for automatic generation of these aliases,
so each table you use should have an entry in the `database` section.
Once the configuration has been loaded, and the connection to the database
established, the contents of the `settings` table are loaded into the
`config` section of the configuration object.
Blocks invoked via Application are passed the configuration in the "settings"
reference, and can access the sections of the configuration using code like
$self -> {"settings"} -> {"database"} -> {"auth_methods"}
$self -> {"settings"} -> {"config"} -> {"base"}
If your code updates values in the `config` section values, you should use
ConfigMicro::save_db_config() or ConfigMicro::set_db_config() to make your
changes persistent.
As noted above, the configuration file may contain more sections than just
the `database` section, so it is perfectly valid to do things like
[database]
... as above...
[foo]
bar = wibble
quux = fred
And your blocks may access the additional section via, for example,
$self -> {"settings"} -> {"foo"} -> {"bar"}