名前

Mojolicious::Plugin::Config - Perl的なコンフィグプラグイン

使い方

# myapp.conf (it's just Perl returning a hash)
{
  # 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('Config');
say $config->{foo};

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

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

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

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

説明

Mojolicious::Plugin::ConfigはPerl的なコンフィグプラグインです。

$app変数かapp関数を通して、アプリケーションオブジェクトにアクセスできます。 strict, warnings, utf8と Perl 5.10 featuresが自動的に 有効になっています。 通常のコンフィグファイルmyapp.confmyapp.$mode.confのように modeを指定して拡張することができます。 デフォルトのコンフィグのファイル名はアプリケーションクラスは Mojoliciousmonikerメソッドの値から生成されます。

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

オプション

default

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

デフォルトの設定。設定ファイルをオプショナルなものにします。

ext

# Mojolicious::Lite
plugin Config => {ext => 'stuff'};

コンフィグファイルのファイル拡張子です。デフォルトはconf

file

# Mojolicious::Lite
plugin Config => {file => 'myapp.conf'};
plugin Config => {file => '/etc/foo.stuff'};

コンフィグファイル。デフォルトはMOJO_CONFIGの値かアプリケーションのホームディレクトリの中の$moniker.conf です。

メソッド

Mojolicious::Plugin::ConfigMojolicious::Plugin のすべてのメソッドを継承しており、次の新しいメソッドを実装しています。

load

$plugin->load($file, $conf, $app);

コンフィグファイルをロードし、コンテンツをparseに渡します。

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

parse

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

コンフィグファイルを解析します。

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

register

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

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

参考

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

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

関連情報