2014-07-20 4 views
1

응용 프로그램 버전을 반환하는 Yesod에 GET 처리기를 작성하려고합니다.Yesod 응용 프로그램에서 Paths_ *의`version`을 사용하십시오.

{-# LANGUAGE OverloadedStrings #-} 

module Handler.Version where 

import qualified Data.Text   as T 
import   Data.Version  (showVersion) 
import   Import 
import   Paths_MyApp   (version) 

getVersionR :: Handler Value 
getVersionR = return $ object 
    [ "version" .= T.pack (showVersion version) ] 

내가 Application.hs에서 가져 오기를 추가 :

import Handler.Version 

routes에서 선 : 여기

는 하스켈 핸들러에 대한 코드입니다

/version VersionR GET 

하지만 나는 실행시 다음 오류가 발생합니다. cabal install :

.../MyApp/dist/build/libHSMyApp-0.1.0.a(Version.o):(.text+0xda5): 
    undefined reference to `MyAppszm0zi1zi0_PathszuMyApp_version1_closure' 

.cabal 파일에 누락 된 것으로 의심 되긴하지만 확실하지 않습니다. exposed-modules 섹션에 Handler.Version을 추가했지만, 어쨌든 Paths_* 파일을 언급해야하는지 궁금합니다.

답변

2

는 해결 :

은 내가 .cabal 파일의 exposed_modules 섹션
Paths_MyApp 

을 추가했다. 이제 올바르게 컴파일됩니다.

+1

Btw를 사용하면'yesod add-handler'를 사용할 수 있으며 Yesod는 경로, 처리기 파일 추가 및 .cabal 파일에 모듈 추가를 처리합니다. – MaxGabriel