Fusebox не анализирует XML-файлы

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

Проблема в том, что иногда файлы fusebox xml не обрабатываются независимо от того, какие изменения я делаю. Если я форсирую повторный анализ, используя переменные 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 ответ

Решение

Увидеть, 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, он будет работать только для вашего приложения, просто для удобства добавляется префикс, как и другие. Таким образом, вы можете перечитать синглтоны вашего приложения.

Другие вопросы по тегам