Reputation: 3227
EDIT : SOLVED My issue was coming from two things -- I had a syntax error in the defmacro somewhere. I deleted it and wrote a small function that I could then access (only after restarting the repl). The big second-issue was that I was ignorant to the fact repl needed to be restarted to recognize any changes I had made. Would never have figured this out without the concrete answer given below =).
I have been working through the pedestal tutorial on github, and it recommends testing some things via repl - my problem is that I can't find the namespace/ macros or functions I am interested in working with.
user=> (require '(junkyard-client.html-templates))
nil
user=> (def t (junkyard-client-templates))
user=> CompilerException java.lang.RuntimeException: Unable to resolve symbol:
junkyard-client-templates in this context, compiling:
(C:\Users\Ben\AppData\Local\Temp\form-init3290053673397861360.clj:1:8)
I have tried other things syntactically, such as (require 'junkyard-client.html-templates). This is at v2.0.10 in the pedestal tutorial:https://github.com/pedestal/app-tutorial/wiki/Slicing-Templates
EDIT: this is what I am trying to get to
(ns junkyard-client.html-templates
(:use [io.pedestal.app.templates :only [tfn dtfn tnodes]]))
(defmacro junkyard-client-templates
[]
{:junkyard-client-page (dtfn (tnodes "junkyard-client.html" "hello") #{:id})
:other-counter (dtfn (tnodes "tutorial-client.html" "other-counter") #{:id}
})
solved stage
Upvotes: 1
Views: 599
Reputation: 5231
require
makes the namespace available within your current namespace, but does not make the symbols directly available. You still need to namespace qualify the symbols, unless you use :refer
or use
.
(require '[junkyard-client.html-templates])
(def t (junkyard-client.html-templates/junkyard-client-templates))
It might be preferable to alias the namespace or refer the specific symbol you are using, for convenience.
Alias:
(require '[junkyard-client.html-templates :as templates])
(def t (templates/junkyard-client-templates))
Refer:
(require '[junkyard-client.html-templates :refer [junkyard-client-templates]])
(def t (junkyard-client-templates))
Note: require
and :refer
is generally preferred over use
.
Upvotes: 1