Fork me on GitHub

I just took a web dev class and next semester is my last semester for software engineering. We were taught about server side scripts, CGI, the document object model, servlets, the role of javascript, html and css, and the browser as an application hosting platform, and node.js. We worked heavily with the idea of asynchronous execution both within node.js event loop and in the browser with AJAX. We talked about the traditional view of the web as a means to serve documents in a synchronous fashion, serving the entire page on every request, and how requests are idempotent, but also how the above technologies have sort of moved the web towards something more interactive.


I was wondering if anyone had any resources for someone at my level that would help me get up to speed with what is considered the "golden standard" for web dev in clojure and clojurescript


On my own browsing I've come to the conclusion that ring seems to be the de-facto standard, but I'm having trouble understanding how and where all the pieces fit together.


There’s a book, Web Development in Clojure, that covers a lot of the core concepts. There’s also Luminus, a project template, that includes a tutorial for building a simple guestbook:


Is there anything specific you had trouble understanding, @bcbradley?


@weavejester I just needed some direction first, so that I'll have the chance to have trouble understanding the things I ought to be trying to understand, rather than spin my wheels on things that aren't crucial


@bcbradley, the Luminus tutorial might be a good place to start in that case.


Maybe someone can help me understand a (probably basic) problem I'm having with ring? I'm attempting to send a file in a response that's read from disk (io/file "something.pdf") and I'd like to delete it after the file has been sent, but obviously io/delete-file within the (response...) form deletes the file before its sent . Is the right place to be looking?


@rodeorockstar You can use piped-input-stream. io/copy the file to the output stream, then delete the file.


Ah, thanks!