Using the App Engine Users API from Clojure

9 June 2010

In my previous post about Accessing the Datastore I set up basic security using a security-constraint element in the deployment descriptor (web.xml). This was simple, as the app didn't have to be aware of security concerns at all. The downside is that the app doesn't know if the user is logged in and can't react to that. For example, the "Create new post" link is shown to all users, only after clicking it (and logging in) they get an ugly error message about missing privileges. This is bad usability, so let's use the App Engine Users API and move the authentication and authorization into the app.

more »

Getting Interactive Development to Work (Again)

4 June 2010

In my last post I promised to fix my local development setup to enable the interactive development style typical for Clojure and make the App Engine services (such as the datastore) available from the REPL.

Others have already tackled the same problem. The best resource I found is the hackers with attitude blog, another one is here. My code is largely based on these contributions, I rolled my own version mainly to get a better understanding of the setup.

more »

Accessing the App Engine Datastore

1 June 2010

In my last post, I managed to deploy a Compojure app to Google App Engine. Serving static content isn't very exciting, though. Pretty much every app will need some way to store and retrieve data. So let's try to access the App Engine Datastore.

more »

Deploying to App Engine

11 May 2010

In my last post, I set up a basic Hello World Compojure app, running on a local Jetty instance. Now I want to deploy this to Google App Engine.

more »

A Fresh Start

7 May 2010

Since my last post a lot has happened in Clojure- and Compojure-Land. Managing dependencies and building projects is much easier now that there is Leiningen and more people have played around with Clojure on Google App Engine, some are even deploying live apps (check out TheDeadline).

So I decided to build upon these great contributions and (finally) continue this little tutorial.

more »
Blog Archive