Shake build system 将持久服务与Shake一起使用

Shake build system 将持久服务与Shake一起使用,shake-build-system,Shake Build System,我们有一个震动构建系统,其中一些规则与Postgres数据库通信,作为一个持久的后台服务。我们如何使用Shake来确保服务在需要时启动,并在Shake完成后关闭 特别是,如果没有规则使用该服务,我们不希望启动该服务,如果使用该服务,我们也不希望在运行期间多次启动/停止该服务。在Shake中实现此模式的一种方法是: rules = do startService <- newCache $ \() -> do ... start the service here

我们有一个震动构建系统,其中一些规则与Postgres数据库通信,作为一个持久的后台服务。我们如何使用Shake来确保服务在需要时启动,并在Shake完成后关闭


特别是,如果没有规则使用该服务,我们不希望启动该服务,如果使用该服务,我们也不希望在运行期间多次启动/停止该服务。

在Shake中实现此模式的一种方法是:

rules = do
    startService <- newCache $ \() -> do
        ... start the service here ...
        runAfter $ ... shut down the service here ...

    "*.txt" %> \out -> do
        startService ()
        ... use the service here ...
rules=do
startService do
... 在这里启动服务。。。
美元后运行。。。关闭这里的服务。。。
“*.txt”%>\out->do
startService()
... 使用这里的服务。。。
我们创建一个名为
startService
的缓存项。使用
newCache
仅在需要时,操作最多执行一次。我们可以启动服务,但这是有意义的(甚至可能先构建服务)。我们使用
runAfter
关闭服务,该服务将在Shake完成执行后运行

为了确保服务在任何规则中都可用,我们首先调用
startService()

作为一个相关功能,如果您有一个规则,其中您不想要持久性服务,而只是批量操作,请参阅
batch
函数