この回答が想定されている.net環境では役に立ちますが、* nix/PHP環境では、これが私がどのように同じ状況を処理するかはわかりません。
OK、私はあなたに逃れたとして、いくつかのアプリの動作は、環境に依存している時間があり、ダムの事と解放生産コード
をしました。開発環境と本番環境の間で確認するには、この機能を提供するために、私はグローバル/etc/profile/profile.d/custom.shの設定(CentOSの)に次の行を追加しました:
SERVICE_ENV=dev
とコードに私が持っていますラッパーメソッドは、名前に基づいて環境変数を取得し、アプリケーションコードにアクセスできるように値をローカライズします。以下は、現在の環境をチェックして、(PHPで)それに応じて反応する方法を示す抜粋です:
public function __call($method, $params)
{
// Reduce chatter on production envs
// Only display debug messages if override told us to
if (($method === 'debug') &&
(CoreLib_Api_Environment_Package::getValue(CoreLib_Api_Environment::VAR_LABEL_SERVICE) === CoreLib_Api_Environment::PROD) &&
(!in_array(CoreLib_Api_Log::DEBUG_ON_PROD_OVERRIDE, $params))) {
return;
}
}
は、あなたのようにいくつかの極端なユースケースのために保存し、唐辛子に環境をチェックして、アプリケーションのロジックをしたくない、覚えておいてくださいスニペットで実演した。むしろ、DNSを使用して運用データベースへのアクセスを制御する必要があります。たとえば、開発環境内で次のデシベルのホスト名mydatabase-db
ではなく、あなたの実際の運用サーバーのローカルサーバーに解決されます。また、コードを運用環境にプッシュすると、DNSがホスト名を正しく解決するため、コードは環境チェックを行わずに「うまく動作する」必要があります。
、あなたのテストにPRODからバックアップを復元するとき、それを更新するために思い出しているテーブルを使用しての一つの問題またはDEV環境とあなたがPRODを見たとき、あなたは –
@Michaelいけないと思うとき怖がら - 美しく動作しますが、それはコメントだけだと私は答えとしてそれを受け入れることができない... – DaveN59
DaveN59 @その場合、私は答えに私のコメントを変換しました... –