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