My recommendation is to use a closure. So I'd write your example as: (defn username-endpoint [{:keys [db]}] (routes (GET "/:username" [username] (let [user (users/get-user db username)] (str "<h1>Hello " (:name user) "</h1>")))))
So you pass your configuration map into the endpoint function, which returns a handler. You can then wrap this in a component: (defrecord EndpointComponent [build-routes] component/Lifecycle (start [component] (if (:routes component) component (assoc component :routes (build-routes component)))) (stop [component] (dissoc component :routes))) Incidentally, the above code is taken directly from Duct <https://github.com/weavejester/duct>, a template and small supporting library I've written for building component-based web apps. I've also written a blog article <https://www.booleanknot.com/blog/2015/05/22/structuring-clojure-web-apps.html> around general best practice for this type of style. - James On 8 June 2015 at 22:51, Dru Sellers <d...@drusellers.com> wrote: > So, I guess I am a bit lost, how does someone actually use component? I > have an application all set up with it and it seems to be working as I > would expect but Stuart seems to be steering me in a different direction. > > https://github.com/stuartsierra/component/pull/35 > > https://github.com/stuartsierra/component/issues/34 > > So I'll try and paint a full picture. > https://gist.github.com/drusellers/8109dce4b9fb19c14ebb > > I know compojure and component / reloaded may not play well, but I'm > trying to figure out how to best use the system var. Am I close, I'd love > to give back a decent PR to the README.md of the component repo to help > others as they come along. > > -d > > -- > 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 unsubscribe from this group and stop receiving emails from it, send an > email to clojure+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. > -- 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 unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.