Clojure repl - 我怎样才能确保:reload-all确实重新加载了所有必需的命名空间?

时间:2016-07-25 13:25:50

标签: clojure leiningen

lein REPL中存在一种奇怪且非常烦人的行为,更不用说经常耗时的行为。

即,如果我使用:reload-all使用命名空间,并且它所需的命名空间有错误,则repl不会告诉我有关它的事情。它只需要所述命名空间的最后一个有效构建,并没有通知我它已经这样做了。

显然,在大多数情况下,这是非常不令人满意的。因为我不会使用:reload-all如果所有命名空间都没有改变,如果它们确实包含错误,我非常想知道它,而不是突然想知道为什么代码我&#39 ;在REPL中执行m似乎与我在屏幕上的代码完全不同。

有没有办法强迫这种行为?

1 个答案:

答案 0 :(得分:4)

tools.namespace图书馆可以为您提供帮助。

(require ... :reload)通过(require ... :reload-all)require重新加载代码。因此,请尝试使用clojure.tools.namespace/refresh

,而不是user> (clojure.tools.namespace.repl/refresh)
refresh

它将扫描您的项目中已更改的文件/命名空间,并按正确的顺序重新加载它们及其依赖项。

$sth->execute(array(':user => $username' , ':pass => $user_pass' )); 将在重新加载期间在依赖名称空间中known issues

此外,请阅读report about errors以了解您的代码使用此库和requirements