Mojoliciousでconfigを分けたいっ!
2019年2月14日
configを分離
config/myapp_devel.conf config/myapp_prod.conf
MyApp.pm
package MyApp;
use Mojo::Base 'Mojolicious';
use Path::Class;
sub startup {
my $self = shift;
my $config = $self->_config();
}
sub _config {
$self = shift;
my $home = new Path::Class::File(__FILE__);
my $root = $home->dir->resolve->absolute->parent->parent();
my $suffix = $self->mode eq 'production' ? '_prod' : '_devel';
my $f = $root->stringify . '/myapp/config/myapp' . $suffix . '.conf';
$self->plugin( 'Config', { 'file' => $f } );
}
Controller
これであとは、普通にコントローラーとかで環境ごとのconfigが使えるようになる
sub hoge {
$self = shift;
my $hoge = $self->config->{'hoge'};
}
productionでの起動
configは起動時のmodeで切り替え。
何も指定しなければdevelopmentなので、productionモードで起動したい場合はこんな感じで。
daemon script/myapp -m production
もしくは、環境変数に入れても。
MOJO_MODE=production daemon script/myapp