2010-09-10 13 views
1

J'ai un projet CF9 configuré avec une structure de répertoires à plusieurs niveaux. Au niveau racine, j'ai le site de production en direct avec son Application.cfc. Il contient un certain nombre de variables liées à un indicateur 'debugMode'. Dans le cas du site de production, cet indicateur est donc défini sur false.Application.cfc incorrecte référencée par le site de test dans le sous-répertoire du site principal

Dans un sous-répertoire du site de production, j'ai un dossier contenant une version de test du site. Cela a son propre Application.cfc avec debugMode défini sur true. Outre ce drapeau et les modifications que nous testons, il est identique à la production Application.cfc.

Il n'y a pas eu de problèmes avec cette opération jusqu'à ce que nous ayons ajouté une logique pour réinitialiser Application.cfc afin de voir nos modifications sans attendre le délai (que nous avons défini à 30 minutes).

Pour ce faire, nous avons ajouté ce bloc à la fonction « OnRequestStart » dans Application.cfc (il est présent sur la production et les versions d'essai):

<cfif StructKeyExists(URL, "reset")> 

     <!--- Reset application and session. ---> 
     <cfset THIS.OnApplicationStart() /> 
     <cfset THIS.OnSessionStart() /> 

    </cfif> 

Cela semblait d'abord fonctionner correctement. Si nous ajoutons '? Reset' à l'url pour chaque page de la version de test, les modifications apportées à Application.cfc sont immédiatement répercutées, mais nous avons rapidement découvert un effet secondaire désastreux: l'appel à la réinitialisation sur la version de test modifie également notre site de production. tester la version de Application.cfc, ce qui fuit tout. L'exécution de la logique '? Reset' sur le site de production a résolu ce problème, mais a ensuite amené toutes les pages de test à utiliser le fichier Application.cfc de production au lieu de la version de test. Attendre que le fichier Application.cfcs expire et s'actualise automatiquement ne fait aucune différence, alors maintenant notre environnement de test est foiré.

Tout aperçu de ce qui se passe ou quoi faire serait grandement apprécié car nous sommes assez perplexes. Est-ce simplement une mauvaise architecture? Nous en avons hérité et nous sommes maintenant habitués à cette structure, donc une solution rapide serait préférable, mais je suis ouvert aux suggestions.

Merci.

Répondre

6

Le problème est le plus probable que les deux fichiers application.cfc spécifient le même nom d'application.

Ainsi, ils sont, en substance, la même application. Ainsi, que vous activiez l'actualisation à partir du site "Test" ou du site "Live", vous réinitialisez la même application, puis vous réinstallez les variables à partir de la version dont vous avez émis la réinitialisation.

Vous devez définir le nom de l'application "Test" sur quelque chose de différent de l'application en cours.

Pour Test:

<!--- For the "Test" Application ---> 
<cfset this.name = "TESTApplication"> 

For Live:

<!--- For the "Live" Application ---> 
<cfset this.name = "Application"> 
+0

Merci beaucoup. Cela a fait l'affaire. – Dane