Генерирах уебсайт Yesod stub с помощта на yesod init
и успях да стартирам yesod devel
за тестване. Въпреки това, аз обикновено поставям действителните източници на haskell в поддиректория src
на основната директория на проекта, т.е. едно ниво под мястото, където се намира файлът <project>.cabal
.
Когато обаче преместих сайта yesod на src
и промених файла cabal, за да добавя реда hs-source-dir: src
, получих грешки, подобни на следното -
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" в цялата кодова база. Има ли начин това да се прочете от самия файл на кабала?