この回答が想定される .net 環境で役立つかどうかはわかりませんが、* nix/PHP 環境では、これが同じ状況を処理する方法です。
OK、私はばかげたことをして、製品コードをリリースしました
あなたが逃したように、一部のアプリの動作が環境に依存する場合があります。開発環境と本番環境をチェックするこの機能を提供するために、次の行をグローバル /etc/profile/profile.d/custom.sh config (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 を使用して本番データベースへのアクセスを制御する必要があります。たとえば、開発環境内では、次の db ホスト名mydatabase-db
は、実際の運用サーバーではなくローカル サーバーに解決されます。また、コードを本番環境にプッシュすると、DNS がホスト名を正しく解決するため、コードは環境チェックなしで「そのまま機能する」はずです。