1, Extract the app out of the Webserver record into its own var. 2, Add to the Webserver record an additional argument called handler. 2, Put the component in a separate namespace. 3, Initialize your component with the app var.
OR, use system, which does all of the above for you. https://github.com/danielsz/system/ <https://www.google.com/url?q=https%3A%2F%2Fgithub.com%2Fdanielsz%2Fsystem%2F&sa=D&sntz=1&usg=AFQjCNGlALFOedRvbCU_dSsOE0I8pazDhQ> I'll post an example application in the repo if people are interested. On Wednesday, October 8, 2014 8:42:14 AM UTC+3, Andrew Meredith wrote: > > This is not a full example, but I ran into the same issue when building an > app for the Clojure Cup not too long ago. The general approach I used is > this: > > - create the Compojure routes in a function with the components I need > as parameters > - declare the web server itself (I used httpkit) as a component with > the dependencies needed for the routes > - build a handler from the routes within the web server component's > start function, passing the dependencies into the route-generating function > > I'm no Clojure expert, and this was my first project using Stuart Sierra's > Component library, so I would be interested to hear some feedback from the > more seasoned Clojure folks here. > > Here is the relevant file from my project if you are interested: > https://github.com/kendru/tourbillon/blob/master/src/tourbillon/www/core.clj#L67 > > On Tuesday, October 7, 2014 11:33:33 AM UTC, JPatrick Davenport wrote: >> >> Hello, >> I'm trying to create a web app. I'm having the damnest time trying to >> figure out how to layer my application. I want to pass protocol >> implementations to the routes. The protocols define interacting with >> various data sources that I need down the way. >> >> I saw Stuart Sierra's talk about Component. It looks to satisfy my needs. >> What I can't find is an example project for component and compojure. >> Unfortunately the project com.stuartsierra/component is poorly named. >> Googling for component + compojure brings back mostly false positives. >> >> Does anyone have a gist or blog post about how to do this? >> >> Thanks, >> JPD >> > -- 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.