2011-09-12 9 views
4

yesod initを使用してYesodスタブWebサイトを生成し、テストのためにyesod develを実行することができました。しかし、私は通常、メインプロジェクトディレクトリのサブディレクトリsrc、すなわち<project>.cabalファイルが存在する場所の1つ下のレベルに実際のhaskellソースを配置します。私はsrcにイェソドサイトを移動し、ライン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")) 

イェソドは、コンパイル時に生成されたコードの多くを使用しているように見えますさまざまなディレクトリへのパスをハードコードする必要があります。この問題を解決する最良の方法は何ですか?私が理想的にやってみたいのは、コードベースで "src" alllへのパスをハードコードしないことです。それはキャブファイル自体からそれを読み取るために幾分か?

答えて

0

まあ、あなたはとすることができますhs-source-dirsを判断するためにカバールファイルを解析するいくつかのTHコードを書くことができますが、それは過剰だと思います。問題のファイルパスに ".."を追加するだけです。また、設定を編集してglob機能で再生したい場合もあります。

+0

「..」はトリックをしません。ソースフォルダ 'src'の名前を前に付ける必要があります。しかし、選択肢がそれとTHを使用してカバールファイルを解析する場合は、私は前者と一緒に行くと思います。 –

+0

configフォルダをsrcにも移動したいとお考えですか? –

+0

はい、私はすべてをsrcに移動しています –