@nqounetです。

少し前にAmon2で、それなりのアプリを書きました。

その時、確かconfig周りを結構調べて、コードをしっかりと書いたはずだったのですが、そのコードを読んでいて、configはどうやって呼んでるんだっけ?、と思って調べてしまったので、また忘れた時のために書いておきます。

configはフレームワークがうまくやってくれる

アプリ(仮にMyApp.pmとする)にはload_configしか書いてなかったので、configは何処から来てるんだ、というところからAmon2のソースを読んでみた。

というのも、Amon2は継承して使うフレームワークなので、アプリに書いてないメソッドはAmon2.pmを読めば書いてあるからです。

結果としては、MyApp.pmにload_configというメソッドを書いて値を返すようにしておくと、その結果をconfigとして保持するようになっていた。

configを直接書くよりは、Amon2の仕組みをちゃんと使っておくほうが良さそうだ。

というわけで、load_configしか書いていなかったのでした。

先にググれば良かった

調べてみると、上に書いたようなことが丁寧に解説してあるページが見つかった。

…まあ、よくあることです。

configの呼び出し方

コントローラー(MyApp::Webのインスタンス)からconfigで呼び出せます。

MyApp/Web/Dispatcher.pm

1
2
3
4
5
6
7
8
9
10
11
12
13
14
...

any '/' => sub {
my ($c) = @_;
my $config = $c->config;
my $counter = $c->session->get('counter') || $config->{initial_counter};
$counter++;
$c->session->set('counter' => $counter);
return $c->render('index.tx', {
counter => $counter,
});
};

...

フレームワークは先人の知恵のかたまりなので、うまく利用しましょう。