The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

Name

Class::Usul::Config - Configuration class with sensible attribute defaults

Synopsis

   use Class::Usul::Constants qw( TRUE );
   use Class::Usul::Types     qw( ConfigType HashRef LoadableClass );
   use Moo;

   has 'config'       => is => 'lazy', isa => ConfigType, builder => sub {
      $_[ 0 ]->config_class->new( $_[ 0 ]->_config_attr ) },
      init_arg        => undef;

   has '_config_attr' => is => 'ro',   isa => HashRef, builder => sub { {} },
      init_arg        => 'config';

   has 'config_class' => is => 'ro',   isa => LoadableClass, coerce => TRUE,
      default         => 'Class::Usul::Config';

Description

Defines the configuration object. Attributes have sensible defaults that can be overridden by values in configuration files which are loaded on request

Pathnames passed in the cfgfiles attribute are loaded and their contents merged with the values passed to the configuration class constructor

Configuration and Environment

Defines the following list of attributes;

appclass

Required string. The classname of the application for which this is the configuration class

appldir

Directory. Defaults to the application's install directory

binsdir

Directory. Defaults to the application's bin directory

cfgfiles

An array reference of non empty simple strings. The list of configuration files to load when instantiating an instance of the configuration class

ctlfile

File in the ctrldir directory that contains this programs control data

ctrldir

Directory containing the per program configuration files

datadir

Directory containing data files used by the application

encoding

String default to the constant DEFAULT_ENCODING

extension

String defaults to the constant CONFIG_EXTN

home

Directory containing the config file. Required

l10n_attributes

Hash reference of attributes used to construct a Class::Usul::L10N object. By default contains one key, domains, an array reference which defaults to the constant DEFAULT_L10N_DOMAIN and the applications configuration name. The filename(s) used to translate messages into different languages

locale

The locale for language translation of text. Defaults to the constant LANG

localedir

Directory containing the GNU Gettext portable object files used to translate messages into different languages

locales

Array reference containing the list of supported locales. The default list contains only the constant LANG

lock_attributes

Hash reference of attributes used to construct an IPC::SRLock object

log_attributes

Hash reference of attributes used to construct a Class::Usul::Log object

logfile

File in the logsdir to which this program will log

logsdir

Directory containing the application log files

name

String. Name of the program

no_thrash

Integer default to 3. Number of seconds to sleep in a polling loop to avoid processor thrash

pathname

File defaults to the absolute path to the PROGRAM_NAME system constant

phase

Integer. Phase number indicates the type of install, e.g. 1 live, 2 test, 3 development

prefix

String. Program prefix

root

Directory. Path to the web applications document root

rundir

Directory. Contains a running programs PID file

salt

String. This applications salt for passwords as set by the administrators . It is used to perturb the encryption methods. Defaults to the prefix attribute value

sessdir

Directory. The session directory

sharedir

Directory containing assets used by the application

shell

File. The default shell used to create new OS users. Defaults to the environment variable SHELL. If that is not set tries (in order); /bin/ksh, /bin/bash. which 'sh', and finally defaults to /bin/sh. If the selected file does not exist then the type constraint on the attribute will throw

suid

File. Name of the setuid root program in the bin directory. Defaults to prefix-admin

tempdir

Directory. It is the location of any temporary files created by the application. Defaults to the File::Spec tempdir

vardir

Directory. Contains all of the non program code directories

Subroutines/Methods

BUILDARGS

Loads the configuration files if specified in the cfgfiles attribute. Calls "inflate_symbol" and "inflate_path" as required

inflate_path

Inflates the __symbol( relative_path )__ values to their actual runtime values

inflate_paths

Calls "inflate_path" for each of the matching values in the hash that was passed as argument

inflate_symbol

Inflates the __SYMBOL__ values to their actual runtime values

Diagnostics

None

Dependencies

Class::Usul::File
Moo

Incompatibilities

There are no known incompatibilities in this module

Bugs and Limitations

There are no known bugs in this module. Please report problems to the address below. Patches are welcome

Author

Peter Flanigan, <pjfl@cpan.org>

License and Copyright

Copyright (c) 2015 Peter Flanigan. All rights reserved

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See perlartistic

This program is distributed in the hope that it will be useful, but WITHOUT WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE