1

現在、application.cfc で、Fusebox 5.5 フレームワークを拡張しています。次に、以下の OnRequestStart メソッドで、特定の条件に応じてヒューズボックス モードを設定します。

問題は、変更を加えても、fusebox xml ファイルが再解析されないことがあることです。URL 変数 fusebox.parse=true&fusebox.loadclean=true&fusebox.password=xxx を使用して強制的に再解析すると、ファイルが再度解析されます。

FUSEBOX_PARAMETERS.mode をダンプすると、「development-full-load」と表示されますが、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>
4

1 に答える 1

3

参照してください。スコープに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 属性ではないことに注意してくださいfusebox.loadapp。これはアプリでのみ機能し、便宜上他のものと同じように接頭辞を付けただけです。このようにして、アプリケーションのシングルトーンを読み直すことができます。

于 2011-05-08T13:10:12.703 に答える