2009-07-23 22 views
5

Tengo que mantener una variable en mi Aplicación. (Cfm | cfc) para establecer el entorno en el que se ejecuta actualmente la aplicación, el entorno (desarrollo | prueba | producción).Cómo configurar una variable para todo el servidor en ColdFusion

Me gustaría establecer una variable de entorno en el servidor, para que pueda leer su valor en Application.cfm.

¿Es esto posible?

Respuesta

10

Lo más fácil es establecer una variable de entorno del sistema operativo (a nivel del sistema, o para el usuario con el que ColdFusion se ejecuta) y reiniciar el servicio. La variable está entonces disponible en el ámbito CGI:

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

También podría usar las propiedades del sistema Java. En el administrador de ColdFusion, vaya a "Configuración del servidor/Java y JVM", y añadir algo como esto a los "Argumentos de JVM":

-Dcom.mycompany.environment=development

A continuación, puede pedir que el valor en ColdFusion:

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

Debería reiniciar el servicio CF cada vez que realice un cambio, pero el valor parece bastante estático, por lo que no debería ser un problema.

+0

yay, eso funciona. muchas gracias. por cierto, ¿cómo hacen ese tipo de separación? – noobsaibot

+0

Me alegra oír que funciona. :) ¿Qué quieres decir con "separación"? – Tomalak

+0

la separación de fragmentos de código que deberían ejecutarse solo en los cuadros dev/prueba/producción. – noobsaibot

3

Usando apache podrías. En la configuración de Apache (httpd.conf) o el host virtual si tiene el módulo de carga Env se puede hacer esto:

SetEnv APP_ENVIRONMENT DEVELOPMENT 

Luego de ColdFusion:

#cgi['APP_ENVIRONMENT']# 

si vuelca el alcance CGI el valor no se mostrará, pero estará allí si lo muestra.

+0

gracias por la punta. No ejecuto Apache y no parece poder encontrar la configuración en iis para hacer ese tipo de cosas:/ – noobsaibot

+0

esta publicación (de una búsqueda rápida en Google) http://forums.iis.net/p/ 1146779/1858505.aspx sugiere que es posible en iis7 – Ian

+0

+1 para la sugerencia de que no se muestra cuando se descarga el ámbito CGI. – Seybsen

0

Lo primero que pensé al leer la pregunta era para establecer una variable SERVER:

Pero entonces el problema es, dónde establecer que?

En CF9, habrá un método onServerStart() para este tipo de cosas.

+0

, pero luego tendrías que mantener eso en cada aplicación que tengas, ¿no es así? SETENV y la opción -D se configuran en el * servidor en sí *. no tengo idea de cómo debería haberlo dicho :) :) – noobsaibot

+0

No, los valores de alcance de SERVER están disponibles para todo el servidor de ColdFusion. Usted podría estar pensando en el alcance APLICACIÓN. Convertirlo en una variable CGI es útil ya que también funcionará en todos los servidores de aplicaciones. –

Cuestiones relacionadas