Fusebox не анализирует XML-файлы - PullRequest
1 голос
/ 08 мая 2011

В настоящее время в application.cfc я расширяю Fusebox 5.5 Framework.Затем в методе OnRequestStart, приведенном ниже, я установил режим fusebox в зависимости от определенного условия.

Проблема в том, что иногда xml-файлы fusebox не анализируются независимо от того, какие изменения я делаю.Если я форсирую повторный анализ, используя переменные url fusebox.parse = true & fusebox.loadclean = true & fusebox.password = xxx, тогда файлы снова анализируются.

Это похоже на то, что Fusebox остается в рабочем режиме, хотя когда я выкидываю файл FUSEBOX_PARAMETERS.mode, он говорит "полная загрузка"

Что может быть причиной этого?Правильно ли манипулирует режим fusebox в приведенном ниже коде или такие настройки нужно выполнить где-то еще (кроме, очевидно, fusebox.xml) ??

Любая помощь будет полезна.Спасибо

 <cffunction name="onRequestStart">
    <cfset variables.server_type = "Development" />

    <cfswitch expression="#variables.server_type#">
        <cfcase value="development">
            <cfset FUSEBOX_PARAMETERS.mode = "development-circuit-load" />
            <cfset FUSEBOX_PARAMETERS.debug = true />
            <cfset request.component_reload = true />
        </cfcase>
        <cfdefaultcase>
            <cfset FUSEBOX_PARAMETERS.mode = "production" />
            <cfset FUSEBOX_PARAMETERS.debug = false />
            <cfset request.component_reload = false />
        </cfdefaultcase>
    </cfswitch>
    <cfif (StructKeyExists(attributes, "fusebox.loadapp") AND attributes.fusebox.password EQ application.fusebox.password) OR FUSEBOX_PARAMETERS.mode NEQ application.fusebox.mode>
        <cfset this.onApplicationStart() />
    </cfif> 

    <cfset superReturn = super.onRequestStart(arguments.1) />
</cffunction>

1 Ответ

3 голосов
/ 08 мая 2011

См. FUSEBOX_PARAMETERS хранятся в области application, по умолчанию они включены в огромный контейнер application.fusebox.Настройки Fusebox заполняются при вызове super.onApplicationStart(), поэтому их изменение в onRequestStart не имеет смысла.

Я бы порекомендовал переместить код cfswitch в тело компонента, где вы определяете настройки приложения.

В onRequestStart вы можете принудительно перезапустить приложение, чтобы перечитать настройки, возможно, что-то вроде этого:

<cfif StructKeyExists(attributes, "fusebox.loadapp") AND attributes["fusebox.password"] EQ application.fusebox.password>
    <cfset this.onApplicationStart() /
</cfif>

Обратите внимание, что fusebox.loadapp не является встроенным атрибутом Fusebox, он будет работать только дляВаше приложение просто с префиксом, как и другие, для удобства.Таким образом, вы можете перечитать синглтоны вашего приложения.

...