【问题标题】:Clojure Yesql not able to find queries fileClojure Yesql 找不到查询文件
【发布时间】:2015-01-28 13:15:17
【问题描述】:

我正在尝试在我的测试 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 连接。

谢谢!

【问题讨论】:

    标签: vim clojure


    【解决方案1】:

    该文件必须位于您可以使用的类路径中

    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 是一个完全有效的路径。

    【讨论】:

    • 哇!有用!谢谢!我不知道 Yesql 需要相对路径。我在错误的地方追逐它 - lein 类路径不包含项目根文件夹,所以我被愚弄认为将 query.sql 移动到根目录实际上是在做某事。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-31
    • 2015-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-27
    相关资源
    最近更新 更多