使用更快的反馈(解释模式)开发Yesod应用程序?

时间:2014-01-06 16:31:40

标签: haskell web yesod convenience-methods

当我使用yesod devel时,每次更改模板文件或任何模块时,它都会重新编译整个应用程序。

有没有办法更快地获得有关开发的反馈?我的意思是不要重新编译,而是使用ghci或者Yesod?

2 个答案:

答案 0 :(得分:1)

我自己从未尝试过,但我认为你所寻找的是wai-handler-devel。引用文档:

  

此处理程序会在任何更改时自动重新加载源代码。它通过使用提示包工作,实质上是在处理程序中嵌入GHC。

yesod book中也提到了它,它也提供了有用的信息:

  

(...)wai-handler-devel允许您开发应用程序而无需担心停止编译。

     

Yesod为开发服务器提供了另一种方法,称为yesod devel。与wai-handler-devel的不同之处在于yesod devel实际上每次编译代码,尊重cabal文件中的所有设置。这是一般Yesod开发的推荐方法。

答案 1 :(得分:0)

我不熟悉Yesod,但我经常通过不断重启Web服务器在GHCi中构建Web应用程序。例如,使用类似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上直接使用过这个非常成功。