2.8 KiB
Configuration
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"}