2015-01-28 9 views
5

Sto tentando di utilizzare la libreria Yesql di Kris Jenkins nel mio progetto Clojure di prova. Ho creato un esempio di file queries.sql con una singola query. Singolo file core.clj assomiglia a questo (precalc è il nome del progetto di test):Clojure Yesql non è in grado di trovare il file di query

(ns precalc.core) 
(require '[yesql.core :refer [defqueries defquery]]) 

(println (defqueries "resources/queries.sql")) 
(defquery col-type "resources/queries.sql") 
(slurp "resources/queries.sql") 

Quando si tenta di valutare per esempio linea 4, ottengo

;!!CompilerException java.io.FileNotFoundException: resources/queries.sql, compiling:(precalc/core.clj:4:10)

Ho provato a mettere queries.sql nella cartella principale del progetto pure, ma senza alcun risultato. Tuttavia, funziona a rovescio. Il mio errore deve essere molto ovvio. Qualcuno può aiutarmi per favore?

Uso il plug-in camme fiammante di Leiningen, Macvim e Tim Pope, collegato tramite sidro-nrepl.

Grazie!

risposta

9

Il file deve essere sul classpath, che è possibile visualizzare utilizzando

lein classpath 

Guarda le prime voci, loro aspetto simile a questi:

/git/project/test:/git/project/src:/git/project/dev-resources:/git/project/resources:... 

Dal momento che già messo in resources, sei pronto. Il punto importante, tuttavia, è che il percorso si passa a defqueries deve essere relativa al classpath, così nel tuo caso relativo al resources:

(defqueries "queries.sql") 

slurp opere perché opera direttamente sul vostro filesystem, non solo sul classpath. Poiché hai avviato il REPL nella root del progetto, resources/queries.sql è un percorso perfettamente valido.

+0

Wow! Funziona! Grazie! Non ero consapevole del fatto che Yesql avrebbe bisogno di percorsi relativi. Lo stavo inseguendo nei posti sbagliati - lein classpath non contiene la cartella root del progetto, quindi sono stato indotto a pensare che spostare queries.sql alla radice stesse effettivamente facendo qualcosa. – siphiuel

Problemi correlati