Clojure Yesql无法找到查询文件

时间:2015-01-28 13:15:17

标签: vim clojure

我正在尝试在我的测试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.sql放入根项目文件夹中,但无济于事。虽然啜食有效。我的错误必须非常明显。有人可以帮忙吗?

我使用Leiningen的复制品,Macvim和Tim Pope的vim-fireplace插件,通过cider-nrepl连接。

谢谢!

1 个答案:

答案 0 :(得分:9)

该文件必须位于您可以使用

显示的类路径中
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是完全有效的路径。