我正在攻击我使用lein new app inclojure
创建的Clojure应用。我每次启动REPL时都会预先加载一些内容,因此我创建了一个dev/user.clj
文件,并在我的project.clj
中提供了该文件:
(defproject inclojure "0.1.0-SNAPSHOT"
:description "FIXME: write description"
:url "http://example.com/FIXME"
:license {:name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"}
:dependencies [[org.clojure/clojure "1.5.1"]]
:main ^:skip-aot inclojure.core
:target-path "target/%s"
:profiles {:uberjar {:aot :all}
:dev {:source-paths ["dev"]}})
该文件大多只需要一堆垃圾,所以我可以使用简写:
(ns inclojure.core
(:require [clojure.java.io :as io]
[clojure.tools.namespace.repl :refer (refresh-all)])
(:use [clojure.reflect :only [reflect]]
[clojure.pprint :only [pprint print-table pp]]))
(defn r
"inspect all of the properties in a java object, optionally by specifying a
pattern"
([o] (r o "."))
([o prefix]
(->> (reflect o :ancestors true)
:members
(filter #(re-find (re-pattern (str "(?i)" prefix)) (str (:name %))))
(pprint))))
这一切都有效,但当我运行(refresh-all)
时,它会丢失dev/user.clj
的所有内容。有没有办法让我能够(refresh-all)
从dev/user.clj
保留或重新加载所有内容?
似乎我可能想在inclojure.repl
中创建一个特定于REPL的命名空间,如dev/user.clj
,然后将其设为REPL的init-ns
。