这就是我要这样做的原因:我正在使用HugSQL库,该库具有一个def-db-fns
宏,其名称如下:(hugsql/def-db-fns "sql/queries.sql")
基本上,它查看sql文件,并使用该文件在调用宏的名称空间中进行函数定义。但是问题是如果我更改queries.sql
,tools.namespace不会刷新名称空间,因为名称空间本身没有更改。因此,我想知道是否有某种方法可以使tools.namespace始终刷新特定的名称空间,或者以某种方式链接queries.sql
作为依赖项,以便在更改名称空间时刷新它。
edit:到目前为止,我想出的最好的解决方案是:
(ns user
(require [clojure.java.shell :refer [sh]]
[clojure.tools.namespace.repl :as tns]))
(defn refresh []
(sh "touch" "src/project_name/queries.clj")
(tns/refresh))
答案 0 :(得分:0)
您可以使用refresh-all
代替refresh
:刷新所有名称空间,无论它们何时更改。
我在文档中没有找到任何关于将特定名称空间标记为“总是重新加载”的信息。
您可以通过touch
将文件设置为将来的修改日期来对其进行黑客攻击,以便在上一次refresh
检查之后始终“对其进行修改”,但是如果您自己编辑文件和/或破坏其他监视更改的工具,则将重置该值:
# set the modified date in the year 3000
touch -m -t 300001010101 queries.clj