CakePHP2でDBの接続設定を切り替える(本番と開発環境とか)時にこういうのはどうかというメモ。
DB環境の切り替えについてググってみると(1)database.php内でIPアドレスを参照して切り替える方法や、(2)Config/core.phpまたはconfig/bootstrap.phpに設定を書き込む方法がヒットします(こことか)。
しかしどちらもあまりしっくりこなかったので第3の案を考えてみます。理由は(1)の場合:IPアドレスやホスト名に依存するとネットワークが変わった時に動作しない。ネットワーク設定とデータベース設定が連動しているのは直感的ではない(まあわかるんだけど)(2)の場合:core.phpやbootstrap.phpは他の設定も入るので、基本的にはアプリケーションと一体と考えて、バージョン管理したい。core.phpやbootstrap.phpはアプリケーションの設定であって、database.phpのデフォルト接続のようなインフラよりの設定は分離したい(これもまあいいような気もするけど)。
そこで、「app/Configディレクトリ内に環境を指定する空のファイルを設置し、それが置いてある環境ではその設定をDBのデフォルト設定とする」、という実装をつくってみました。ファイル名は仮にUSE_DATABASE_CONFIG_{CONFIG_NAME}としています。
このファイルがapp/Configディレクトリ内(database.phpと同じ階層)に存在すれば、見つかったCONFIG_NAMEを使ってDATABASE_CONFIG.CONFIG_NAMEの設定をデフォルトとする(なければdevを使う)。
こうすれば、このダミーファイルだけを開発(商用)環境に置くことでその他の設定ファイルを全てバージョン管理化におくことができるので、このほうが取り回しがしやすいのではないかな、と。
ということで、gistを置いてみました。なにかの参考になれば幸いです。
0 件のコメント:
コメントを投稿