1Mojolicious::Plugin::CoUnsfeirg(C3o)ntributed Perl DocumMeonjtoaltiicoinous::Plugin::Config(3)
2
3
4
6 Mojolicious::Plugin::Config - Perl-ish configuration plugin
7
9 # myapp.conf (it's just Perl returning a hash)
10 {
11 # Just a value
12 foo => "bar",
13
14 # Nested data structures are fine too
15 baz => ['♥'],
16
17 # You have full access to the application
18 music_dir => app->home->child('music')
19 };
20
21 # Mojolicious
22 my $config = $app->plugin('Config');
23 say $config->{foo};
24
25 # Mojolicious::Lite
26 my $config = plugin 'Config';
27 say $config->{foo};
28
29 # foo.html.ep
30 %= config->{foo}
31
32 # The configuration is available application-wide
33 my $config = app->config;
34 say $config->{foo};
35
36 # Everything can be customized with options
37 my $config = plugin Config => {file => '/etc/myapp.stuff'};
38
40 Mojolicious::Plugin::Config is a Perl-ish configuration plugin.
41
42 The application object can be accessed via $app or the "app" function,
43 strict, warnings, utf8 and Perl 5.16 features are automatically
44 enabled. A default configuration filename in the application home
45 directory will be generated from the value of "moniker" in Mojolicious
46 ("$moniker.conf"). You can extend the normal configuration file
47 "$moniker.conf" with "mode" specific ones like "$moniker.$mode.conf",
48 which will be detected automatically.
49
50 These configuration values are currently reserved:
51
52 "config_override"
53 If this configuration value has been set in "config" in Mojolicious
54 when this plugin is loaded, it will not do anything besides loading
55 deployment specific plugins.
56
57 "plugins"
58 plugins => [{SetUserGroup => {user => 'sri', group => 'staff'}}]
59
60 One or more deployment specific plugins that should be loaded right
61 after this plugin has been loaded.
62
63 The code of this plugin is a good example for learning to build new
64 plugins, you're welcome to fork it.
65
66 See "PLUGINS" in Mojolicious::Plugins for a list of plugins that are
67 available by default.
68
70 Mojolicious::Plugin::Config supports the following options.
71
72 default
73 # Mojolicious::Lite
74 plugin Config => {default => {foo => 'bar'}};
75
76 Default configuration, making configuration files optional.
77
78 ext
79 # Mojolicious::Lite
80 plugin Config => {ext => 'stuff'};
81
82 File extension for generated configuration filenames, defaults to
83 "conf".
84
85 file
86 # Mojolicious::Lite
87 plugin Config => {file => 'myapp.conf'};
88 plugin Config => {file => '/etc/foo.stuff'};
89
90 Path to configuration file, absolute or relative to the application
91 home directory, defaults to the value of the "MOJO_CONFIG" environment
92 variable or "$moniker.conf" in the application home directory.
93
95 Mojolicious::Plugin::Config inherits all methods from
96 Mojolicious::Plugin and implements the following new ones.
97
98 load
99 $plugin->load($file, $conf, $app);
100
101 Loads configuration file and passes the content to "parse".
102
103 sub load ($self, $file, $conf, $app) {
104 ...
105 return $self->parse($content, $file, $conf, $app);
106 }
107
108 parse
109 $plugin->parse($content, $file, $conf, $app);
110
111 Parse configuration file.
112
113 sub parse ($self, $content, $file, $conf, $app) {
114 ...
115 return $hash;
116 }
117
118 register
119 my $config = $plugin->register(Mojolicious->new);
120 my $config = $plugin->register(Mojolicious->new, {file => '/etc/app.conf'});
121
122 Register plugin in Mojolicious application and merge configuration.
123
125 Mojolicious, Mojolicious::Guides, <https://mojolicious.org>.
126
127
128
129perl v5.38.0 2023-09-11 Mojolicious::Plugin::Config(3)