Como posso incluir mapeamentos no Application.cfc a partir do arquivo de propriedades externas?

Eu tenho problemas com a definição de mapeamentos em Application.cfc Temos Servidor divergente (dev, QS, prod) Cada um com um caminho diferente. Eu quero definir pathes específicos do servidor e variáveis ​​via arquivo de configuração. No ApplicationStart, você lê o arquivo ini e configura seu sistema.http://www.raymondcamden.com/index.cfm/2005/8/26/ColdFusion-101-Config-Files-AGoGo Isso funciona bem.

Normalmente você define os mapeamentos em Applcation.cfc assim:

<!--- in Application.cfc --->
<cfset this.mappings['/components'] = "D:\Inetpub\wwwroot\myApp\components">

Em algum lugar em um arquivo cfm normal, instati um teste chamado cfc via:

<cfset t = createObject("component", "components.test")>

Eu quero definir os mapeamentos apenas uma vez emonApplicationsStart

<cffunction
    name="OnApplicationStart"
    access="public"
    returntype="boolean"
    output="false"
    hint="Fires when the application is first created.">

    <!---create structure to hold configuration settings--->
    <cfset ini = structNew()>
    <cfset ini.iniFile = expandPath("./ApplicationProperties.ini")>
    <cfset application.ini = ini>

    <!--- read ini file --->
    <cfset sections = getProfileSections(application.ini.iniFile)>

    <cfloop index="key" list="#sections.mappings#">
       <cfset this.mappings[key] = getProfileString(application.ini.iniFile, "mappings", key)>
    </cfloop>

Mas isso não funciona porque this.mappings está vazio e próximo pedido. :(

Colocando isso em OnRequestStart

<!--- read ini file --->
    <cfset sections = getProfileSections(application.ini.iniFile)>

    <cfloop index="key" list="#sections.mappings#">
       <cfset this.mappings[key] = getProfileString(application.ini.iniFile, "mappings", key)>
    </cfloop>

Eu recebo um erro que o componente não pode ser encontrado. Isto é estranho.

Colocando a estrutura no escopo do aplicativo

    <cfloop index="key" list="#sections.mappings#">
       <cfset APPLICATION.mappings[key] = getProfileString(application.ini.iniFile, "mappings", key)>
    </cfloop>

Como chamar meu componente?

<cfset t = createObject("component", "application.components.test")>

Não funciona.

Então eu tenho 3 alvos.

lendo todos os pathes e mapeamentos do arquivo inilê-los uma vez no ApplicationStartuso fácil no código fonte.