2009-07-23 13 views
5

アプリケーションが現在実行している環境を設定するには、アプリケーションの変数(cfm | cfc)を維持する必要があります(環境はdevelopment | test | productionです)。ColdFusionでサーバ全体の変数を設定する方法

私はApplication.cfmでその値を読むことができるように、サーバー自体に環境変数を設定したいと思います。

これは可能ですか?

答えて

10

最も簡単なのは、(システムレベルで、またはColdFusionが実行されているユーザの)OS環境変数を設定し、サービスを再起動することです。この変数はCGIスコープで利用できます。

<cfset EnvName = CGI.COLDFUSION_ENVIRONMENT> 
<cfoutput>#EnvName#</cfoutput> 

Javaシステムのプロパティを使用することもできます。あなたのColdFusion Administratorで、「サーバーの設定/ JavaとJVM」に進んで、「JVM引数」に次のようなものを追加します。

-Dcom.mycompany.environment=development

あなたはその後、ColdFusionでその値を求めることができます:

<cfset System = CreateObject("java", "java.lang.System")> 
<cfset EnvName = System.getProperty("com.mycompany.environment")> 
<cfoutput>#EnvName#</cfoutput> 

変更するたびにCFサービスを再起動する必要がありますが、値はかなり静的に見えるため、問題ではありません。質問を読んで

+0

どうもありがとう。あなたはどうやってそのような分離をしていますか? – noobsaibot

+0

うれしいことを聞いてうれしいです。 :)「分離」はどういう意味ですか? – Tomalak

+0

dev/test/productionボックスでのみ実行されるべきコードチャンクの分離。 – noobsaibot

3

Apacheを使用するとできます。 Apacheの設定(httpd.confの)またはあなたのバーチャルホストでは、Envのモジュールは、あなたがこれを行うことができます読み込まれている場合:

のColdFusionから次に
SetEnv APP_ENVIRONMENT DEVELOPMENT 

#cgi['APP_ENVIRONMENT']# 

あなたはCGIスコープに値をダンプした場合表示されませんが、出力するとそこに表示されます。

+0

チップのおかげで。私はApacheを実行していないし、その種のことを行うiisの設定を見つけることができるようではありません:/ – noobsaibot

+0

このポスト(クイックグーグル検索から)http://forums.iis.net/p/ 1146779/1858505.aspxでは、iis7で可能です。 – Ian

+0

+1は、CGIスコープをダンプするときに表示されないというヒントです! – Seybsen

0

私が最初に考えたのはサーバー変数を設定することでした:

をしかし、問題はそれを設定する場合は、ありますか?

CF9には、この種のもののためのonServerStart()メソッドがあります。

+0

しかし、あなたはあなたが持っているすべてのアプリケーションでそれを維持しなければならないでしょうか? SETENVと-Dオプションは*サーバ自体に設定されています*。どのように私はそれを別のものにしなければならないのか分かりません:) – noobsaibot

+0

いいえ、SERVERスコープ付きの変数は、ColdFusionサーバー全体で使用できます。あなたはAPPLICATIONの範囲を考えているかもしれません。 これをCGI変数にすることは、アプリケーションサーバー間で動作するので便利です。 –

関連する問題