2016-07-25 3 views
2

lein REPL에는 시간이 오래 걸리는 행동을하는 것이 아니라 매우 괴롭고 귀찮습니다.Clojure repl - reload-all이 실제로 필요한 모든 네임 스페이스를 다시로드합니까?

즉, reload-all을 네임 스페이스와 함께 사용하고 네임 스페이스가 필요로하는 네임 스페이스에 오류가있는 경우 repl은 그것에 대해 알려주지 않습니다. 그것은 단지 네임 스페이스의 마지막 유효한 빌드를 취하고 그렇게했음을 알리지 않습니다.

분명히, 대부분의 경우 이것은 매우 만족스럽지 않습니다. 왜냐하면 내가 사용하지 않을 것이기 때문에 : reload-all은 필요한 네임 스페이스가 변경되지 않았다면, 그리고 그들이 에러를 포함하고 있다면, 나는 그것에 대해 아주 많이 알고 싶어한다. REPL은 내가 화면에서 가지고있는 코드와 완전히 다른 것을 수행하는 것처럼 보입니다.

강제로이 동작을 사용할 수 있습니까?

답변

4

tools.namespace 라이브러리가 도움이 될 수 있습니다.

(require ... :reload) 또는 (require ... :reload-all)을 통해 코드를 다시로드하는 known issues이 있습니다. 따라서, 대신 require의, clojure.tools.namespace/refresh를 사용해보십시오 :

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

그것은 파일/변경 및 그들과 올바른 순서 종속성을 다시로드 네임 스페이스에 대한 프로젝트를 검색합니다.

refreshreport about errors은 다시로드하는 동안 종속 네임 스페이스에 있습니다.

또한이 라이브러리를 사용하는 코드는 requirements이며 potential issues을 참조하십시오.

+0

매우 깔끔하고 내 인생을 훨씬 쉽게 해줍니다. 감사! – UncleBob

+0

지금은'clojure.tools.namespace.repl/refresh' 인 것처럼 보입니다 –

+0

@GordonGustafson 맞아요, 고마워요. 답변을 업데이트했습니다. – OlegTheCat

관련 문제