2014年5月1日木曜日

CakePHP 2.xでdatabase.phpの設定を切り替える要点だけ

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 件のコメント:

コメントを投稿