Вторник, 6 Январь 2009
erlangweb: начало
Хочется мне, не скрою, писать web приложения на erlang. И хочется делать это достаточно давно.
Из всех сущетсвующих библиотек для написания web-приложения на erlang мне больше всего приглянулся Erlang Web. Но у него оказалось проблема — нет работающих примеров. Те что есть, содержат опечатки (да и сама библиотека не без них ☹ ) и многие вещи просто недосказаны.
В попытке это исправить я написал приложение, но для его работы требуется патч.
Инструкция по использованию
Предполагаем что вы скачали erlangweb и наложили на него патчи распоковав в ~/erlang/erlangweb
. Мое приложение в ~/erlang/shop
.
Теперь, внутри ~/erlang/shop
нам нужно инициализировать erlangweb проект
~/erlang/erlangweb-1.2/bin/start.erl
Дальше, нам надо добавить ссылки на библиотеки erlangweb
ln -s ~/erlang/erlangweb-1.2/lib/eptic-1.2 lib
ln -s ~/erlang/erlangweb-1.2/lib/wpart-1.2 lib
ln -s ~/erlang/erlangweb-1.2/lib/wparts-1.2 lib
ln -s ~/erlang/erlangweb-1.2/lib/yaws-1.73 lib
Дальше нам надо добавить наше приложение в erlangweb
./bin/add.erl
Тут нас спросят про имя, надо ввести shop
и в качестве версии 0.1.
Дальше мы добаляем dispatcher, для этого в файле config/dispatch.conf
пишем:
{dynamic, delegate, "^/shop", "config/dispatchers/shop.conf"}.
Далее надо подключить локализацию, записав в config/project.conf
:
{default_language, en}.
{language_files, [{en, "config/languages/en.conf"},
{ru, "config/languages/ru.conf"}]}.
И собрать наш проект:
erl -make
Следующим шагом мы можем запустить это все:
./bin/start_interactive yaws
Но нам нужна база, для этого надо ее проинициализовать, запустив из erlang shell
shop_starter:db_start().
После каждого рестарта приложения нам надо будет запускать:
shop_starter:start().
Но можно этого избежать, добавив в файл bin/start_interactive
текст -s shop_starter
в конце каждой строчки начинающий с erl
.
Все, теперь можно заходить на http://localhost:8080/shop/ и изучать как это все работает, читая tutorial.
Комментарии
занятно. у нас товарищ пытался взвести сайт KievLtU на Yaws; до сих пор, к сожалению, так и не взвёл
вернусь из коммандировки — плюну на всё, буду писать под HAppS
Я иду в направление завода тут блога и всего вокруг на erlang :)
Посмотрим, когда я закончу ;)
Форма комментирования для «erlangweb: начало»
Offtopic: отвечаю тут, потому что не уверен, что ЖЖ пришлёт куда-нибудь ответ на комментарий, подписанный опенидом. Я по поводу задачки про пароли Брюса Шнайера: раз уж взялись думать, пожалуйста, не читайте тамошних комментариев! Там уже есть решение, или, по крайней мере, то, что большинство согласилось считать решением. И Вы удовольствия не получите, и у меня не будет шанса увидеть другой вариант, если вдруг Вы его придумаете. ;-) Удачи!
Спасибо. Ответы приходят мне на email с ЖЖ.