GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
Mojolicious::Plugin::JSONConfig(3) User Contributed Perl Documentation Mojolicious::Plugin::JSONConfig(3)

Mojolicious::Plugin::JSONConfig - JSON configuration plugin

  # myapp.json (it's just JSON with embedded Perl)
  {
    %# 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('JSONConfig');
  say $config->{foo};

  # Mojolicious::Lite
  my $config = plugin 'JSONConfig';
  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 JSONConfig => {file => '/etc/myapp.conf'};

Mojolicious::Plugin::JSONConfig is a JSON configuration plugin that preprocesses its input with Mojo::Template.

The application object can be accessed via $app or the "app" function. A default configuration filename in the application home directory will be generated from the value of "moniker" in Mojolicious ("$moniker.json"). You can extend the normal configuration file "$moniker.json" with "mode" specific ones like "$moniker.$mode.json", which will be detected automatically.

These configuration values are currently reserved:

"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.
"plugins"
  "plugins": [{"SetUserGroup": {"user": "sri", "group": "staff"}}]
    

One or more deployment specific plugins that should be loaded right after this plugin has been loaded.

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.

Mojolicious::Plugin::JSONConfig inherits all options from Mojolicious::Plugin::Config and supports the following new ones.

  # Mojolicious::Lite
  plugin JSONConfig => {template => {line_start => '.'}};

Attribute values passed to Mojo::Template object used to preprocess configuration files.

Mojolicious::Plugin::JSONConfig inherits all methods from Mojolicious::Plugin::Config and implements the following new ones.

  $plugin->parse($content, $file, $conf, $app);

Process content with "render" and parse it with Mojo::JSON.

  sub parse ($self, $content, $file, $conf, $app) {
    ...
    $content = $self->render($content, $file, $conf, $app);
    ...
    return $hash;
  }

  my $config = $plugin->register(Mojolicious->new);
  my $config = $plugin->register(Mojolicious->new, {file => '/etc/foo.conf'});

Register plugin in Mojolicious application and merge configuration.

  $plugin->render($content, $file, $conf, $app);

Process configuration file with Mojo::Template.

  sub render ($self, $content, $file, $conf, $app) {
    ...
    return $content;
  }

Mojolicious, Mojolicious::Guides, <https://mojolicious.org>.
2021-12-08 perl v5.32.1

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.