I think what you actually want is: (defn get-id [] (session/get :uid))
in your code, you're trying to call #'session/get directly and bind it to get-id. Of course, the problem with this is that #'session/get expects to be called in the context of a request which is where your Unbound var exception is coming from. Hope this helps, Dave On Mon, Apr 30, 2012 at 11:39 AM, Travis Smith <tra...@legomaster.net> wrote: > What does 'java.lang.ClassCastException: clojure.lang.Var$Unbound cannot be > cast to clojure.lang.IDeref' mean. I'm getting this a lot and I want to > understand it better, make it easier for me to avoid this. Most of the time > I just end up adjusting my def/defn's around until it works. This is hardly > optimal. > > (this is all on clojure 1.3.0) > > An example... > > (ns app-admin.models.current-user > (:require [noir.session :as session] > [app-admin.models.users :as users])) > > (def get-id > (session/get :uid)) > > (defn set-user! [user] > (session/put! :uid {:_id user})) > > Give me an exception for get-id > > ClassCastException clojure.lang.Var$Unbound cannot be cast to > clojure.lang.IDeref clojure.core/deref (core.clj:2078) > > So set-user! binds correctly, but get-id doesn't seem to... > > => (get-id) > llegalStateException Attempting to call unbound fn: > #'app-admin.models.current-user/get-id clojure.lang.Var$Unbound.throwArity > (Var.java:43) > > Then I check it... > > => (meta #'get-id) > {:ns #<Namespace app-admin.models.current-user>, :name get-id} > > So it's there, the fn is bound; I'm not exactly sure what's going on and nor > what I'm missing about how this works to help me avoid problems like this in > future. Just guessing and tweaking has gotten me so far, but that's not > sustainable. > > Thanks! > > -Travis > > -- > You received this message because you are subscribed to the Google > Groups "Clojure" group. > To post to this group, send email to clojure@googlegroups.com > Note that posts from new members are moderated - please be patient with your > first post. > To unsubscribe from this group, send email to > clojure+unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/clojure?hl=en -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en