2011-09-12 5 views
4

yesod init을 사용하여 Yesod 스텁 웹 사이트를 생성하고 테스트를 위해 yesod devel을 실행할 수있었습니다. 그러나, 나는 보통 실제 프로젝트의 소스 코드를 주 프로젝트 디렉토리의 서브 디렉토리 src에 넣습니다. 즉, <project>.cabal 파일이 상주하는 한 레벨 아래에 있습니다. 내가 src에 yesod 사이트를 이동 라인 hs-source-dir: src을 추가 도당 파일을 변경할 때하위 디렉토리의 Yesod 응용 프로그램 소스

그러나, 나는 유사한 오류가있어 다음 -

src/Model.hs:12:57: 
Exception when trying to run compile-time code: 
    config/models: openFile: does not exist (No such file or directory) 
    Code: persistFile "config/models" 
In the second argument of `share', namely 
    `$(persistFile "config/models")' 
In the expression: 
    share 
    [mkPersist sqlSettings, mkMigrate "migrateAll"] 
    ($(persistFile "config/models")) 

이 Yesod 것 같은데

컴파일 시간이 많이 생성 된 코드를 사용 다양한 디렉토리에 대한 경로가 하드 코딩되어야합니다. 이 문제를 해결하는 가장 좋은 방법은 무엇입니까? 내가 이상적으로하고자하는 것은 "src"에 대한 경로를 코드베이스에 하드 코딩하지 않는 것입니다. 거기에 독단 파일 자체에서 읽을 수 있나요?

답변

0

글쎄, 은 hs-source-dirs를 확인하기 위해 파일을 구문 분석하는 TH 코드를 작성할 수 있지만 과도하다고 생각합니다. 문제의 파일 경로 앞에 ".."를 추가하십시오. 설정을 편집하고 glob 기능으로 재생하기를 원할 것입니다.

+0

'..'를 추가하면 트릭이 수행되지 않습니다. 원본 폴더 'src'의 이름을 앞에 추가해야합니다. 그러나, 그 선택 사이의 경우 및 음자리표 파일을 구문 분석 TH를 사용하여, 나는 전 함께 갈 것 같아요. –

+0

config 폴더를 src로 옮기고 싶다고 말하는 것입니까? –

+0

네, 모든 것을 src로 옮깁니다. –

관련 문제