うっかりエンジニアのメモ

未来の自分に宛てたメモ

開発環境と本番環境のDB設定変更を自動化する

プライベートで作ってるアプリがそろそろリリースできそうということで、ちまちま準備しておりました。 その過程でDB設定を本番環境のDBサーバに合わせて変更する必要があったけど、環境が変わるたびにいちいちdatabase.phpを変えたりするのはめんどい。

方針として、開発環境と本番環境では動作するホストが異なるので、どうにかこれを利用して上手いことやりたい。

方法

AppModel.phpコンストラクタをオーバーライドします。

<?php

class AppModel extends Model {

    public function __construct($id = false, $table = null, $ds = null) {
        parent::__construct();

        if($_SERVER['SERVER_NAME'] === 'localhost'){
            $this->useDbConfig = 'development';
        }else{
            $this->useDbConfig = 'production';
        }
    }

}

database.php$development = ほにゃほにゃとか$production=ほにゃほにゃと書いておけば、本番環境にデプロイされた時は勝手に本番環境用の設定を読みに行ってくれます。うれしい。

ぐぐるとdatabase.phpにif文書く方法も出てくるのですが、設定ファイルに制御文書くのが個人的に嫌だったので、上記の方法にしました。