О чем это я?
С чего начинается практически каждое web-приложение на Erlang? Не знаю, у кого как, а у меня, как правило, со строчек кода, ответственных за запуск Ковбоя и обслуживание запросов. С функции обновления правил роутинга. Причем всегда это одно и то же — только роуты отличаются, порт и количество акцепторов, может быть. И это можно сделать проще. Догадались уже, к чему я клоню? Нет, это не очередной фреймворк. Это превращение встраиваемого ковбоя в отдельно запускаемое приложение. То есть мы пишем наше приложение, хендлеры Ковбоя, но сам Ковбой не трогаем. Вообще. Ни зависимостей не указываем, ни при старте приложения не запускаем. Любопытно? Добро пожаловать под кат.
Вместо этого, когда приложение уже готово, мы в консоли выполняем команду
cowboyd start myapp /path/to/myapp 8080
и чудесным образом наше приложение запущено и можно полюбоваться на него на порту 8080. Остановить так же легко:
cowboyd stop myapp
Одновременно, разумеется, можно запускать сколько угодно приложений — главное не забывать давать им разные порты ;)
Правила роутинга записываются в файле routes.config в корневой директории вашего приложения. Синтаксис Эрланга, только не нужно объявлять модуль, экспортировать функции и, собственно, писать их. Проще посмотреть на пример routes.config. Если вам нужно обновить правила роутинга, достаточно выполнить очередную нехитрую команду:
cowboyd routes-update myapp
Код после обновления перезагружается автоматически благодаря утилите Sync.
Итак, со вводной частью закончили, теперь главная и, одновременно, самая короткая часть.
Установка
Переходим куда-нибудь, куда будем ставить cowboyd
cd ~/github_projects
Клонируем репозиторий проекта
git clone https://github.com/chvanikoff/cowboyd
Даем права на исполнения для cowboyd
chmod +x cowboyd/cowboyd
Линкуем cowboyd куда-нибудь в исполняемую директорию — например, в /usr/bin
sudo ln -s cowboyd/cowboyd /usr/bin/cowboyd
Вот и все, теперь можно запустить тестовое приложение из репозитория
cowboyd start webapp ~/github_projects/cowboyd/examples/webapp 8008
Приложение умеет говорить, что оно запущено по адресу http://localhost:8008, обслуживать статичные css из ~/github_projects/cowboyd/examples/webapp/priv/css и отдавать 404 для всех прочих страниц. Как только оно вам наскучит — самое время написать что-нибудь свое и опробовать cowboyd в деле ;)
Ссылка на репозиторий: github.com/chvanikoff/cowboyd
Спасибо за внимание.
Автор: Chvanikoff