The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Mojolicious::Plugin::INIConfig - Mojolicious Plugin to create routes automatically

CAUTION

This module is alpha release. the feature will be changed without warnings.

SYNOPSIS

  # myapp.ini
  [section]
  foo=bar
  music_dir=<%= app->home->rel_dir('music') %>

  # Mojolicious
  my $config = $self->plugin('INIConfig');

  # Mojolicious::Lite
  my $config = plugin 'INIConfig';

  # foo.html.ep
  %= $config->{section}{foo}

  # The configuration is available application wide
  my $config = app->config;

  # Everything can be customized with options
  my $config = plugin INIConfig => {file => '/etc/myapp.conf'};

DESCRIPTION

Mojolicious::Plugin::INIConfig is a INI configuration plugin that preprocesses its input with Mojo::Template.

The application object can be accessed via $app or the app function. You can extend the normal config file myapp.ini with mode specific ones like myapp.$mode.ini. 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.

OPTIONS

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

default

  # Mojolicious::Lite
  plugin Config => {default => {section => {foo => 'bar'}}};

Default configuration, making configuration files optional.

template

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

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

METHODS

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

parse

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

Process content with render and parse it with Config::Tiny.

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

register

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

Register plugin in Mojolicious application.

render

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

Process configuration file with Mojo::Template.

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

BACKWARDS COMPATIBILITY POLICY

If a feature is DEPRECATED, you can know it by DEPRECATED warnings. DEPRECATED feature is removed after five years, but if at least one person use the feature and tell me that thing I extend one year each time he tell me it.

DEPRECATION warnings can be suppressed by MOJOLICIOUS_PLUGIN_INICONFIG_SUPPRESS_DEPRECATION environment variable.

EXPERIMENTAL features will be changed without warnings.

BUGS

Please tell me bugs if you find bug.

<kimoto.yuki at gmail.com>

http://github.com/yuki-kimoto/Mojolicious-Plugin-INIConfig

COPYRIGHT & LICENSE

Copyright 2013-2013 Yuki Kimoto, all rights reserved.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.