Источник приложения Yesod в подкаталоге - PullRequest
4 голосов
/ 13 сентября 2011

Я создал сайт-заглушку Yesod, используя 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» по всей базе кода.Есть ли какой-нибудь способ прочитать это из самого файла клики?

1 Ответ

0 голосов
/ 13 сентября 2011

Ну, вы могли бы написать некоторый код TH, который анализирует файл cabal для определения hs-source-dirs, но я думаю, что это чрезмерно.Просто добавьте ".." к указанным путям.Вы также захотите отредактировать настройки и поиграть с функцией glob.

...