Разработка приложения 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 в прошлом довольно успешно.

Другие вопросы по тегам