Как обновить код с помощью loadTemplates для нового Heist API?
Этот код работал с Heist до изменения 0.10.0
main = do
Right ts <- loadTemplates "templates" $
bindSplices mySplices defaultHeistState
etc..
Теперь я получаю ошибку
testdb.hs:59:33: Not in scope: `defaultHeistState'
Я знаю, что подпись типа для loadTemplates изменилась на
loadTemplates :: FilePath -> EitherT [String] IO TemplateRepoSource
Но мне трудно понять, как адаптировать мой старый код, чтобы он работал.
1 ответ
Решение
Хорошо, я заставил это работать с этим, но я открыт для более изящных способов сделать это
load baseDir splices = do
tmap <- runEitherT $ do
templates <- loadTemplates baseDir
let hc = HeistConfig mySplices [] [] [] templates
initHeist hc
either (error . concat) return tmap
main = do
ts <- load "templates" $ bindSplices mySplices
renderWithArgs [("test", T.pack "hello world")] ts "index" >>=
B.putStr . maybe "Page not found" (toByteString . fst)