名前

Mojolicious::Plugin::JSONConfig - JSONコンフィグプラグイン

使い方

# myapp.json (これは埋め込みのPerlが利用できるJSONです。)
{
  %# 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 = $self->plugin('JSONConfig');
say $config->{foo};

# Mojolicious::Lite
my $config = plugin 'JSONConfig';
say $config->{foo};

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

# 設定はアプリケーション全体で利用可能
my $config = app->config;
say $config->{foo};

# オプションですべてをカスタマイズ可能
my $config = plugin JSONConfig => {file => '/etc/myapp.conf'};

説明

Mojolicious::Plugin::JSONConfigMojo::Templateでその入力を前処理するJSONコンフィグプラグインです。

アプリケーションオブジェクトは$appあるいはappヘルパーを通してアクセスされます。 通常のコンフィグファイルであるmyapp.jsonは、myapp.$mode.jsonのようにモードを指定することによって拡張することができます。 デフォルトのコンフィグのファイル名はアプリケーションクラスはMojoliciousmonikerメソッドの値から生成されます。

デフォルトで利用可能なプラグインの一覧はMojolicious::Pluginsプラグインの項目を見てください。

オプション

Mojolicious::Plugin::JSONConfigMojolicious::Plugin::Configと同じオプションを 受け取り、次の新しいオプションがあります。

template

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

Mojo::Templateオブジェクトに渡される属性値、 設定ファイルを前処理するために利用されます。

ヘルパー

Mojolicious::Plugin::JSONConfigMojolicious::Plugin::Configから すべてのヘルパーを継承しています。

メソッド

Mojolicious::Plugin::JSONConfig>は Mojolicious::Plugin::Configのすべてのメソッドを実装しており、 次の新しいメソッドを実装しています。

parse

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

renderでコンテンツを処理し、Mojo::JSONで解析します。

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'});

Mojoliciousアプリケーションにプラグインを登録します。

render

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

Mojo::Templateでコンフィグファイルを処理します。

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

参考

Mojolicious, Mojolicious::Guides, http://mojolicio.us.

(Mojolicious 8.12を反映。2019年6月12日更新)

関連情報