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