2016-07-25 51 views
2

在lein REPL中有一種奇怪的,非常煩人的,並不是經常耗時的行爲。Clojure repl - 我如何確保:reload-all確實重新加載了所有必需的名稱空間?

也就是說,如果我使用:reload-all帶有一個名稱空間,並且它所需的名稱空間有錯誤,則repl不會告訴我關於它的一件事。它只需要上述命名空間的最後一個有效構建,並不會告訴我它已經這樣做了。

顯然,在大多數情況下,這是非常令人不滿意的。因爲我不會使用:reload-all,如果沒有必要的命名空間發生變化,並且如果它們包含錯誤,我會非常想知道它,而不是突然想知道爲什麼我在執行的代碼REPL似乎做了與我在屏幕上顯示的代碼完全不同的內容。

有沒有辦法強制這種行爲?

回答

4

tools.namespace圖書館可能會幫助你。

known issues與通過(require ... :reload)(require ... :reload-all)重新加載代碼。因此,與其require,請嘗試使用clojure.tools.namespace/refresh

user> (clojure.tools.namespace.repl/refresh) 

它會掃描你的項目文件/文件已經改變,將重新加載他們和他們在正確的順序相關的命名空間。

refreshreport about errors在重新加載過程中的依賴名稱空間中。

另外,閱讀關於requirements爲您的代碼來使用此庫和potential issues

+0

非常整齊,讓我的生活變得輕鬆很多。謝謝! – UncleBob

+0

看起來像現在'clojure.tools.namespace.repl /刷新' –

+0

@GordonGustafson沒錯,謝謝。更新了答案 – OlegTheCat

相關問題