Clojure для Google App Engine

Когда у гугловского облачного хостинга Google App Engine появилась поддержка Java стало возможным писать для него приложения не только на Java, но и на языках работающих на базе JVM. Для лисперов такая возможность не осталась не замеченной, что отразилось на некотором позитивном бурлении заграничной и негативном бурлении нашей блогосферы по этому поводу. Здравые же лисперы воодушевились опытом автора первого веб-приложения и написали для App Engine своё: https://the-deadline.appspot.com.

В меру сил они поделились советом и кодом с миром, но в целом инфраструктура для написания веб-приложений для GAE на Clojure оставляет желать лучшего. Нет, написать-то можно всё что угодно, и это будет без проблем работать, вот только нужно очень попотеть чтобы собрать мозаику из разрозненных по Сети кусочков кода, тоесть шаблон-заготовку проекта в котором можно будет без проблем использовать все преимущества стиля разработки на лиспе (полноценный REPL в котором работают все оффлайновые инструменты из GAE SDK).

У сообщества еще много дел, а я расскажу о той мозаике, что мне удалось собрать за денек-другой. Результаты мои малы и неутешительны, eно стоят того чтобы поведать о них и избавить заинтересованных людей. По ходу появления в интернетах стабильных приемов работы с GAE, возможно, я буду писать о ней в этот бложик.

На сегодня я могу рассказать лишь о с любовью заготовленном мною файле-конфигурации project.clj пакетного менеджера Leiningen. Этого будет достаточно чтобы приступить к чтению одного из гайдов по написанию гостевой для GAE. В шаблоне я использую свежайшие на сегодня версии необходимых библиотек, ибо это наиболее разумный вариант (правда, со старым софтом в некоторых сетапах проблем гораздо меньше).

Всё просто:

  1. Создаём новый Clojure-проект:
    lein new guestbook
    
  2. Редактируем project.clj до следующего состояния:

  3. Получаем все необходимые jar'ы командой:
    lein deps
    

    В итоге мы имеем:

    Clojure и Clojure-contrib
    Самой последней версии.
    Compojure
    Фреймворк для веб-программирования на Clojure.
    Jetty
    Java HTTP-сервер.
    Ring
    Библиотека на Clojure для работы с HTTP.
    Hiccup
    Библиотека для генерации HTML прямо из лиспокода.
    Enlive
    Библиотека HTML-шаблонов на Clojure.
    Google App Engine SDK
    Библиотеки для работы (онлайн и оффлайн) с Google App Engine. Оффлайновые, перед отправкой приложения в облако следует удалить.
  4. Что делать дальше? Узнаете в каком-нибудь другом блоге.