Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure 重新加载处理显式加载的源文件的中间件_Clojure_Compojure_Ring - Fatal编程技术网

Clojure 重新加载处理显式加载的源文件的中间件

Clojure 重新加载处理显式加载的源文件的中间件,clojure,compojure,ring,Clojure,Compojure,Ring,Ring附带中间件“重新加载”(https://github.com/ring-clojure/ring/blob/master/ring-devel/src/ring/middleware/reload.clj). 它基于ns跟踪器(https://github.com/weavejester/ns-tracker). ns tracker在源目录中查找可能以ns表单开头的源文件。它根据这些ns表单中包含的信息构建依赖关系图。这当然非常有效,但仅适用于ns表单中明确包含的依赖项 Clojure

Ring附带中间件“重新加载”(https://github.com/ring-clojure/ring/blob/master/ring-devel/src/ring/middleware/reload.clj). 它基于ns跟踪器(https://github.com/weavejester/ns-tracker). ns tracker在源目录中查找可能以ns表单开头的源文件。它根据这些ns表单中包含的信息构建依赖关系图。这当然非常有效,但仅适用于ns表单中明确包含的依赖项

Clojure中有一个习惯用法,将名称空间分解为多个文件。有一个定义名称空间的源文件(使用ns表单)。这个文件可以包含任意数量的顶级表单,但值得注意的是,它将包含加载,通常在顶级,但我想不一定。加载的文件以ns表单开头。这并不像你想象的那么晦涩难懂。。。clojure.core使用它

这些加载文件的内容本身并不构成模块,也不一定能强制它们成为模块(循环依赖项等)

ns tracker不会扫描源文件以查找加载表达式,也不会在ns表单中查找。原因很清楚。但它确实打乱了我的工作流程,因为对加载文件的更改显然不会重新加载名称空间


有人知道是否有一个库处理显式加载的源文件吗?如果没有什么东西,我会把它拼凑起来(可能是写一些关于load的难看的宏),并公开发布。

好的,回答我的问题。。。我已经扩展了ns tracker并提交了拉取请求。这比我想象的要简单,实际上是合理的

我的叉子在:

包括对ns tracker的许多更改。具体到我的问题,它支持以clojure/core使用的方式在ns中使用load/in

通过使用leiningen的“签出”机制,您可以在项目中使用这个fork