은/

2009-11-04 1 views
0

나는 내 웹 루트의 하위 디렉터리에 application.cfc를 확장 여기 application.cfc http://corfield.org/blog/index.cfm/do/blog.entry/entry/Extending_Your_Root_Applicationcfc 설명한 프록시 사용 방법 :은/

/app/mysubdir/application.cfc 
/app/applicationproxy.cfc 

은 CFC 서브 디렉토리에 대한 속성을 확장하면 다음과 같다

<cfcomponent extends="app.applicationProxy"> 

이 모든 것은 현재까지는 잘 작동하지만 더 많은 배경이 있습니다./app/appstaging이라는 디렉토리 옆에 디렉토리를 배치하여 앱을 준비했습니다. 이것은 모든 상대 경로를 사용하고, 상위 디렉토리의 application.cfc가 어떤 디렉토리에 있는지를 파악하고, 변수를 설정하고 (예 : application.appdir) 코드가 상대 경로를 구성하는 데 사용할 수 있기 때문에 충돌이 없습니다. 필요하다면.

여기 내 문제가 있습니다. 이제는 새로운 /app/mysubdir/application.cfc가 생겼으므로이 경로가 준비 디렉토리 트리 인 경우 실제로는 "appstaging.applicationProxy"가되도록 확장 경로가 필요합니다. ColdFusion은 "확장"값이 일정하다고 주장합니다. 내가 다른 곳에서하고있는 것처럼 내가 어디에 있는지 알아 내고 적절한 dirname을 넣지 않을 것이다.

이 문제를 해결할 방법이 있습니까?

+0

CF의 여러 인스턴스를 사용 하시겠습니까? – Henry

+0

공유 할 수있는 호스팅 서비스를 사용하고 있으므로 할 수 없습니다. 얼마 전에 누군가 제 2 호스팅 계정을 제안했지만 가능한 경우이를 피하고 싶습니다. – DaveBurns

+0

어떨까요 ... ANT와 같은 내장 도구를 사용하여 확장 된 경로를 채우십시오. – Henry

답변

1

CF8을 사용하는 경우 application.cfc에서 new.mappings 구조체를 사용하십시오. 그것은 대략 이와 비슷하게 보일 것입니다./app 또는/appstaging에 있는지 여부를 알아낼 수있는 코드를 작성해 드리겠습니다.

if (inAppStaging) this.mappings [ "/ app"] = expandPath ("/ appstaging "); // 또는 무엇이든 ... 앱 스토킹 디렉토리의 전체 경로를 얻으십시오.

이렇게하면이 application.cfc가/app에서 실행될 때와 마찬가지로 항상 작동합니다. appstaging에서 실행될 때 coldfusion에게이 애플리케이션의 경우 "app"가 "appstaging"을 가리킨다 고합니다.

+0

흠. 두 번째 생각에서 더 자세히 읽으십시오. 아마도 효과가 없을 것입니다. drats. –

+0

GetCurrentTemplatePath()를 사용하여 제안 할 것이고 내가 본 것을 보았을 때 예제를 시작했습니다. Marc ... 문제는 Application.cfc가 "/ app"에 대한 매핑에 액세스 할 수 없다는 것입니다. 그것은 그것을 만든 것이므로 그것을 확장 할 수는 없습니다. 그래도 전역 매핑으로 할 수 있어야합니다. –

+0

나는 CF7에 아직도있다 (불행히도). 업그레이드가 계획되어 있지만 아직 타임 라인이 설정되지 않았습니다. GetCurrentTemplatePath를 사용하여 이미 앱에 있는지 또는 앱 스테이징에 있는지 파악하므로 아이디어가 마음에 들었습니다. 이미 작업 방식과 일맥 상통하기 때문입니다. – DaveBurns