Разработка приложения Yesod с более быстрой обратной связью (режим интерпретации)?
Когда я использую yesod devel
он просто перекомпилирует целое приложение каждый раз, когда я изменяю файл шаблона или любой модуль.
Есть ли способ получить более быструю обратную связь о разработке? Я имею в виду не перекомпилировать, а использовать ghci
или что-то с есодом?
2 ответа
Я никогда не пробовал сам, но я думаю, что вы ищете wai-handler-devel. Цитирование документации:
Этот обработчик автоматически перезагружает ваш исходный код при любых изменениях. Он работает с использованием пакета подсказок, по сути, встраивая GHC в обработчик.
Это также упоминается в книге Йесод, которая также имеет полезную информацию:
(...) wai-handler-devel позволяет вам разрабатывать приложения, не беспокоясь о том, чтобы прервать компиляцию.
Yesod предоставляет альтернативный подход для сервера devel, известный как yesod devel. Отличие от wai-handler-devel состоит в том, что yesod devel фактически компилирует ваш код каждый раз, соблюдая все настройки в вашем cabal-файле. Это рекомендуемый подход к общему развитию Yesod.
Я не знаком с Yesod, но я часто создаю веб-приложения в GHCi, постоянно перезагружая веб-сервер. Например, используя что-то вроде async
мы можем настроить поток сервера, который умирает через 15 секунд (возможно, достаточно времени, чтобы протестировать функцию).
-- | run 'defaultMain' for a few seconds then kill it
quicky :: IO ()
quicky = Async.withAsync defaultMain $ \_ ->
replicateM_ 3 (threadDelay (round 5e6) >> putStrLn "(tick)")
Я использовал это прямо поверх Warp в прошлом довольно успешно.