Когда у гугловского облачного хостинга Google App Engine появилась поддержка Java стало возможным писать для него приложения не только на Java, но и на языках работающих на базе JVM. Для лисперов такая возможность не осталась не замеченной, что отразилось на некотором позитивном бурлении заграничной и негативном бурлении нашей блогосферы по этому поводу. Здравые же лисперы воодушевились опытом автора первого веб-приложения и написали для App Engine своё: https://the-deadline.appspot.com.
В меру сил они поделились советом и кодом с миром, но в целом инфраструктура для написания веб-приложений для GAE на Clojure оставляет желать лучшего. Нет, написать-то можно всё что угодно, и это будет без проблем работать, вот только нужно очень попотеть чтобы собрать мозаику из разрозненных по Сети кусочков кода, тоесть шаблон-заготовку проекта в котором можно будет без проблем использовать все преимущества стиля разработки на лиспе (полноценный REPL в котором работают все оффлайновые инструменты из GAE SDK).
У сообщества еще много дел, а я расскажу о той мозаике, что мне удалось собрать за денек-другой. Результаты мои малы и неутешительны, eно стоят того чтобы поведать о них и избавить заинтересованных людей. По ходу появления в интернетах стабильных приемов работы с GAE, возможно, я буду писать о ней в этот бложик.
На сегодня я могу рассказать лишь о с любовью заготовленном мною
файле-конфигурации project.clj
пакетного менеджера Leiningen. Этого
будет достаточно чтобы приступить к чтению одного из гайдов по
написанию гостевой для GAE. В шаблоне я использую свежайшие на сегодня
версии необходимых библиотек, ибо это наиболее разумный вариант
(правда, со старым софтом в некоторых сетапах проблем гораздо меньше).
Всё просто:
-
Создаём новый Clojure-проект:
lein new guestbook
-
Редактируем
project.clj
до следующего состояния: -
Получаем все необходимые 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. Оффлайновые, перед отправкой приложения в облако следует удалить.
- Что делать дальше? Узнаете в каком-нибудь другом блоге.