.\" -*- mode: troff; coding: utf-8 -*- .\" Automatically generated by Pod::Man 5.01 (Pod::Simple 3.43) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie n \{\ . ds C` "" . ds C' "" 'br\} .el\{\ . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "Mojolicious::Plugin::Config 3pm" .TH Mojolicious::Plugin::Config 3pm 2024-05-15 "perl v5.38.2" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH NAME Mojolicious::Plugin::Config \- Perl\-ish configuration plugin .SH SYNOPSIS .IX Header "SYNOPSIS" .Vb 4 \& # myapp.conf (it\*(Aqs just Perl returning a hash) \& { \& # Just a value \& foo => "bar", \& \& # Nested data structures are fine too \& baz => [\*(Aq♥\*(Aq], \& \& # You have full access to the application \& music_dir => app\->home\->child(\*(Aqmusic\*(Aq) \& }; \& \& # Mojolicious \& my $config = $app\->plugin(\*(AqConfig\*(Aq); \& say $config\->{foo}; \& \& # Mojolicious::Lite \& my $config = plugin \*(AqConfig\*(Aq; \& 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 => \*(Aq/etc/myapp.stuff\*(Aq}; .Ve .SH DESCRIPTION .IX Header "DESCRIPTION" Mojolicious::Plugin::Config is a Perl-ish configuration plugin. .PP The application object can be accessed via \f(CW$app\fR or the \f(CW\*(C`app\*(C'\fR 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 (\f(CW\*(C`$moniker.conf\*(C'\fR). You can extend the normal configuration file \f(CW\*(C`$moniker.conf\*(C'\fR with \f(CW\*(C`mode\*(C'\fR specific ones like \f(CW\*(C`$moniker.$mode.conf\*(C'\fR, which will be detected automatically. .PP These configuration values are currently reserved: .ie n .IP """config_override""" 2 .el .IP \f(CWconfig_override\fR 2 .IX Item "config_override" If this configuration value has been set in "config" in Mojolicious when this plugin is loaded, it will not do anything besides loading deployment specific plugins. .ie n .IP """plugins""" 2 .el .IP \f(CWplugins\fR 2 .IX Item "plugins" .Vb 1 \& plugins => [{SetUserGroup => {user => \*(Aqsri\*(Aq, group => \*(Aqstaff\*(Aq}}] .Ve .Sp One or more deployment specific plugins that should be loaded right after this plugin has been loaded. .PP The code of this plugin is a good example for learning to build new plugins, you're welcome to fork it. .PP See "PLUGINS" in Mojolicious::Plugins for a list of plugins that are available by default. .SH OPTIONS .IX Header "OPTIONS" Mojolicious::Plugin::Config supports the following options. .SS default .IX Subsection "default" .Vb 2 \& # Mojolicious::Lite \& plugin Config => {default => {foo => \*(Aqbar\*(Aq}}; .Ve .PP Default configuration, making configuration files optional. .SS ext .IX Subsection "ext" .Vb 2 \& # Mojolicious::Lite \& plugin Config => {ext => \*(Aqstuff\*(Aq}; .Ve .PP File extension for generated configuration filenames, defaults to \f(CW\*(C`conf\*(C'\fR. .SS file .IX Subsection "file" .Vb 3 \& # Mojolicious::Lite \& plugin Config => {file => \*(Aqmyapp.conf\*(Aq}; \& plugin Config => {file => \*(Aq/etc/foo.stuff\*(Aq}; .Ve .PP Path to configuration file, absolute or relative to the application home directory, defaults to the value of the \&\f(CW\*(C`MOJO_CONFIG\*(C'\fR environment variable or \f(CW\*(C`$moniker.conf\*(C'\fR in the application home directory. .SH METHODS .IX Header "METHODS" Mojolicious::Plugin::Config inherits all methods from Mojolicious::Plugin and implements the following new ones. .SS load .IX Subsection "load" .Vb 1 \& $plugin\->load($file, $conf, $app); .Ve .PP Loads configuration file and passes the content to "parse". .PP .Vb 4 \& sub load ($self, $file, $conf, $app) { \& ... \& return $self\->parse($content, $file, $conf, $app); \& } .Ve .SS parse .IX Subsection "parse" .Vb 1 \& $plugin\->parse($content, $file, $conf, $app); .Ve .PP Parse configuration file. .PP .Vb 4 \& sub parse ($self, $content, $file, $conf, $app) { \& ... \& return $hash; \& } .Ve .SS register .IX Subsection "register" .Vb 2 \& my $config = $plugin\->register(Mojolicious\->new); \& my $config = $plugin\->register(Mojolicious\->new, {file => \*(Aq/etc/app.conf\*(Aq}); .Ve .PP Register plugin in Mojolicious application and merge configuration. .SH "SEE ALSO" .IX Header "SEE ALSO" Mojolicious, Mojolicious::Guides, .