NAME
Mojolicious::Plugin::Config - Perl-ish configuration plugin
SYNOPSIS
# myapp.conf (it's just Perl returning a hash)
{
foo
=>
"bar"
,
music_dir
=> app->home->rel_dir(
'music'
)
};
# Mojolicious
my
$config
=
$self
->plugin(
'Config'
);
say
$config
->{foo};
# Mojolicious::Lite
my
$config
= plugin
'Config'
;
say
$config
->{foo};
# foo.html.ep
%=
$config
->{foo}
# The configuration is available application wide
my
$config
= app->config;
say
$config
->{foo};
# Everything can be customized with options
my
$config
= plugin
Config
=> {
file
=>
'/etc/myapp.stuff'
};
DESCRIPTION
Mojolicious::Plugin::Config is a Perl-ish configuration plugin.
The application object can be accessed via $app
or the app
function, strict, warnings, utf8 and Perl 5.10 features are automatically enabled. You can extend the normal configuration file $moniker.conf
with mode
specific ones like $moniker.$mode.conf
. A default configuration filename will be generated from the value of "moniker" in Mojolicious.
The code of this plugin is a good example for learning to build new plugins, you're welcome to fork it.
See "PLUGINS" in Mojolicious::Plugins for a list of plugins that are available by default.
OPTIONS
Mojolicious::Plugin::Config supports the following options.
default
# Mojolicious::Lite
plugin
Config
=> {
default
=> {
foo
=>
'bar'
}};
Default configuration, making configuration files optional.
ext
# Mojolicious::Lite
plugin
Config
=> {
ext
=>
'stuff'
};
File extension for generated configuration filenames, defaults to conf
.
file
# Mojolicious::Lite
plugin
Config
=> {
file
=>
'myapp.conf'
};
plugin
Config
=> {
file
=>
'/etc/foo.stuff'
};
Full path to configuration file, defaults to the value of the MOJO_CONFIG
environment variable or $moniker.conf
in the application home directory.
METHODS
Mojolicious::Plugin::Config inherits all methods from Mojolicious::Plugin and implements the following new ones.
load
$plugin
->load(
$file
,
$conf
,
$app
);
Loads configuration file and passes the content to "parse".
sub
load {
my
(
$self
,
$file
,
$conf
,
$app
) =
@_
;
...
return
$self
->parse(
$content
,
$file
,
$conf
,
$app
);
}
parse
$plugin
->parse(
$content
,
$file
,
$conf
,
$app
);
Parse configuration file.
sub
parse {
my
(
$self
,
$content
,
$file
,
$conf
,
$app
) =
@_
;
...
return
$hash
;
}
register
my
$config
=
$plugin
->register(Mojolicious->new);
my
$config
=
$plugin
->register(Mojolicious->new, {
file
=>
'/etc/app.conf'
});
Register plugin in Mojolicious application and merge configuration.