パルカワ2

最近はFlutterをやっています

Arkの設定まわりの話

Arkはこうするとどこでも設定が取れる。

use MyApp::Models;
models('conf')->{database}{master};

https://github.com/ark-framework/ark/blob/master/lib/Ark/Models.pm

コードを読めばわかるけど、このmodels('conf')、config.plとconfig_local.plを読むようになっている。
そこに直接設定を書いてしまうと使いにくいので、Config::ENVを使うようにするとよいと思う。

package MyApp::Config;
use strict;
use warnings;
use utf8;

use Config::ENV 'PLACK_ENV';

common load("config/common.pl");

config prod => {
    load("config/prod.pl"),
};

config stg => {
    load("config/stg.pl"),
};

config dev => {
    load("config/dev.pl"),
};

1;
# config.pl
use MyApp::Config ();
MyApp::Config->current;

今まで、config_local.plをコミットせずに環境ごとにあれこれしたり、リンクを貼ったりしてたけど、これでいいかもしれない。実際には、試してないのでなんかダメなことあるかも。

追記

人によって変えたい設定は今まで通りconfig_local.plで上書きする。