Amon2のconfigについてまた調べてしまったので記録する

@nqounetです。

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

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

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

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

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

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

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

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

先にググれば良かった

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

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

configの呼び出し方

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

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

...

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

comments powered by Disqus
Built with Hugo
テーマ StackJimmy によって設計されています。