Източник на приложението Yesod в поддиректория

Генерирах уебсайт 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" в цялата кодова база. Има ли начин това да се прочете от самия файл на кабала?


person Anupam Jain    schedule 12.09.2011    source източник


Отговори (1)


Е, вие можете да напишете някакъв TH код, който анализира cabal файла, за да определи hs-source-dirs, но мисля, че това е прекалено. Просто добавете ".." към въпросните файлови пътища. Вие също ще искате да редактирате настройките и да играете с функцията glob.

person Michael Snoyman    schedule 13.09.2011
comment
Добавянето на „..“ няма да свърши работа. Трябва да добавя името на изходната папка 'src'. Въпреки това, ако изборът е между това и използването на TH за анализиране на файла cabal, предполагам, че бих избрал първото. - person Anupam Jain; 13.09.2011
comment
Казвате, че искате да преместите и конфигурационната папка в src? - person Michael Snoyman; 13.09.2011
comment
Така че най-накрая преминах с ръчно указване на src директорията в изходния код. Предложението на TH обаче е единственият реален отговор за четенето на файлове на кабала в момента. - person Anupam Jain; 23.09.2011