Clojure Yesql 找不到查询文件
Clojure Yesql not able to find queries file
我正在尝试在我的测试 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 的 repl、Macvim 和 Tim Pope 的 vim-fireplace 插件,通过 cider-nrepl 连接。
谢谢!
该文件必须位于您可以使用
显示的类路径中
lein classpath
查看前几个条目,它们看起来类似于:
/git/project/test:/git/project/src:/git/project/dev-resources:/git/project/resources:...
因为您已经将它放入 resources
,所以您已经设置好了。然而,重要的一点是您传递给 defqueries
的路径必须 relative 相对于您的类路径,因此在您的情况下相对于 resources
:
(defqueries "queries.sql")
slurp
之所以有效,是因为它直接在您的文件系统上运行,而不仅仅是在类路径上运行。由于您在项目根目录中启动了 REPL,因此 resources/queries.sql
是一个完全有效的路径。
我正在尝试在我的测试 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 的 repl、Macvim 和 Tim Pope 的 vim-fireplace 插件,通过 cider-nrepl 连接。
谢谢!
该文件必须位于您可以使用
显示的类路径中lein classpath
查看前几个条目,它们看起来类似于:
/git/project/test:/git/project/src:/git/project/dev-resources:/git/project/resources:...
因为您已经将它放入 resources
,所以您已经设置好了。然而,重要的一点是您传递给 defqueries
的路径必须 relative 相对于您的类路径,因此在您的情况下相对于 resources
:
(defqueries "queries.sql")
slurp
之所以有效,是因为它直接在您的文件系统上运行,而不仅仅是在类路径上运行。由于您在项目根目录中启动了 REPL,因此 resources/queries.sql
是一个完全有效的路径。