NAME
Mojolicious::Plugin::Config - Perl-ish configuration plugin
SYNOPSIS
# myapp.conf (it's just Perl returning a hash)
{
# Just a value
foo
=>
"bar"
,
# Nested data structures are fine too
baz
=> [
'♥'
],
# You have full access to the application
music_dir
=> app->home->child(
'music'
)
};
# Mojolicious
my
$config
=
$app
->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.16 features are automatically enabled. A default configuration filename in the application home directory will be generated from the value of "moniker" in Mojolicious ($moniker.conf
). You can extend the normal configuration file $moniker.conf
with mode
specific ones like $moniker.$mode.conf
, which will be detected automatically.
If the configuration value config_override
has been set in "config" in Mojolicious when this plugin is loaded, it will not do anything.
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'
};
Path to configuration file, absolute or relative to the application home directory, 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 (
$self
,
$file
,
$conf
,
$app
) {
...
return
$self
->parse(
$content
,
$file
,
$conf
,
$app
);
}
parse
$plugin
->parse(
$content
,
$file
,
$conf
,
$app
);
Parse configuration file.
sub
parse (
$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.