我正在尝试在我的测试Clojure项目中使用Kris Jenkins的Yesql库.我queries.sql用单个查询创建了一个示例文件.单个core.clj文件看起来像这样(precalc是测试项目的名称):
(ns precalc.core)
(require '[yesql.core :refer [defqueries defquery]])
(println (defqueries "resources/queries.sql"))
(defquery col-type "resources/queries.sql")
(slurp "resources/queries.sql")
当试图评估例如第4行时,我得到了
;!!CompilerException java.io.FileNotFoundException: resources/queries.sql, compiling:(precalc/core.clj:4:10)
我也试过放入queries.sqlroot项目文件夹,但无济于事.虽然啜食有效.我的错误必须非常明显.有人可以帮忙吗?
我使用Leiningen的复制品,Macvim和Tim Pope的vim-fireplace插件,通过cider-nrepl连接.
谢谢!
该文件必须位于您可以使用的类路径中
lein classpath
看看前几个条目,它们看起来与以下类似:
/git/project/test:/git/project/src:/git/project/dev-resources:/git/project/resources:...
既然你已经把它放进去了resources,你就定了.但重要的是,传递给的路径defqueries必须相对于类路径,因此在您的情况下相对于resources:
(defqueries "queries.sql")
slurp因为它直接在您的文件系统上运行,而不仅仅在类路径上运行.由于您在项目根目录中启动了REPL,因此它resources/queries.sql是一个完全有效的路径.