他にもいくつかの可能性があります。
一部の組織では、あるネットワーク上に開発用マシンを保持し、別のネットワーク上に運用マシンを保持しています。たとえばdev.example.com
、prod.example.com
. 組織がその方法を使用している場合、アプリケーションは、それが実行されている完全修飾ホスト名を介して、またはおそらく IP アドレスの一部のビットを調べることによって、その環境を判別できます。
もう 1 つの可能性は、組み込み可能なスクリプト言語 (Tcl、Lua、Python が思い浮かびます) を構成ファイルの構文として使用することです。これは、構成ファイルが環境変数 (または IP アドレス) を簡単に照会し、それを使用してif-then-else
ステートメントを駆動できることを意味します。このアプローチの欠点は、誰かが構成ファイルを編集して悪意のあるコードを追加する (ファイルを削除するなど) という潜在的なセキュリティ リスクです。
最後の可能性は、シェル/Python/Perl スクリプトを介して各アプリケーションを起動することです。スクリプトはその環境を照会し、それを使用してif-then-else
、コマンドライン オプションを「実際の」アプリケーションに渡すためのステートメントを駆動できます。
ところで、環境テストif-then-else
ステートメントを次のようにコーディングするのは好きではありません。
if (check-for-running-in-production) {
... // run program in production mode
} else {
... // run program in development mode
}
上記のロジックcheck-for-running-in-production
は、新しく追加された運用マシンを処理するためにテストが更新されていない場合、暗黙のうちに中断されます。代わりに、もう少し防御的にコーディングしたい場合:
if (check-for-running-in-production) {
... // run program in production mode
} else if (check-for-running-in-development) {
... // run program in development mode
} else {
print "Error: unknown environment"
exit
}