按 Ctrl+C(或 +Z 或其他任何东西) - 不会终止 windows 命令行(或 power shell)中的 haskell 应用程序(或happstack应用程序)。
目前我必须关闭窗口,然后打开一个新的命令行/power-shell 窗口,导航到应用程序位置并使用runhaskell再次启动它。每当代码更改时,是否有更简单的方法使应用程序“自动重新加载”?
还是我做错了什么?
Ctrl-C 和 windows 通常存在一些问题。我不是很清楚细节。也许使用 Windows 的人可以提出更好的解决方案。
最简单的方法是使用forkIO
和waitForTermination
do tid <- forkIO $ simpleHTTP nullConf yourApp
waitForTermination
killThread tid
waitForTermination
只是阻塞,直到它收到终止信号。在 unix 平台上,即 ^C。在 windows 下,它是字母“e”(用于退出)。return
根据缓冲,您可能必须按下键。
在 linux 下,您可以使用 happstack-plugins/plugins-auto 在保存源文件时自动重新编译并将更改重新加载到正在运行的服务器中。但是,plugins-auto 目前不支持 Windows,因为它依赖于特定于 linux 的 inotify 库。正在进行一些工作来推广 inotify 支持,以便在可用时可以使用它,并在 windows 下使用轮询解决方案。
要查看 plugins-auto 的旧演示,请查看:
http://happstack.blogspot.com/2010/10/recompile-your-haskell-based-templates.html