Pull to refresh

Comments 23

А может ли Webmachine работать на другом сервере, отличном от Mochiweb?
Из коробки — нет. Расчитан на Mochiweb и вытягивает его через Rebar.
Теоретически может работать и с Apache, наверное. Главное тут взвесить необходимые усилия по допиливанию и отдачу.
Апач не нужен, а вот с Cowboy было бы удобно.
Не можете сказать, почему вы в итоге выбрали Webmachine?

Хотелось бы так же услышать про Nitrogen, да и вообще все фреймворки.
Выбор в пользу webmachine был сделан всилу его простоты и функциональности.
До этого попытался использовать Zotonic CMS (который основывается на webmachine, postgresql и слегка модифицированном erlydtl), он мне показался слишком раздутым. Все эти scomp`ы (так у них называется смесь виджетов на js и серверных обработчиков) и всякого рода другие вебдваноли легко реализуются через обычный ajax, самописные контроллеры (ресурсы в терминах webmachine) и старый добрый html.

По моему скромному мнению, там слишком много абстракций. Единственное что еще нужно (опять же смотря кому, у нас веб разработчику незачем изучать кишки erlang`а что бы сделать свое дело) это шаблоны.

Если посмотреть на nitrogen, заявленные там фишки по части веба — довольно легко реализуются самостоятельно (например Autocompletion, File Uploading, Validation и т.д.). Наверное это спорное мнение, но на мой взгляд легче это сделать со знакомым плагином от jquery, который будет работать везде, чем с тем, как это реализовали в nitrogen.
Веб-приложения на Webmachine я (бы) писать не стал. Он очень хорош для создания REST API. Имеет клонов на других языках программирования (Haskell, Ruby, Python, Scala), что как минимум уже говорит о том, что идея очень хороша.

Весь смысл в том, что есть некий путь у приходящего на сервер HTTP запроса, и если в традиционных веб-приложениях оно обрабатывается условиями, разбором заголовков и содержания запроса, и в результате этих условий выдаётся тот или иной ответ (природа функциональных языков, в частности Erlang, позволяет сделать эту обработку менее уродливой). В случае же Webmachine у нас этот путь будет пройден, даже если мы не напишем никакого кода (и будет выдана ошибка 404). Для того, чтобы этот поток изменить, достаточно переопределить один метод, в итоге это похоже на то, как мы в детстве ставили препятствия ручейку весной. Такой подход позволяет написать минимальное количество кода, которое тем не менее будет обрабатывать все возможные варианты входящих данных в запросе.
У нас написана сложная система управления ресурсами, большая часть логики лежит на СУБД, в качестве транспорта между СУБД и клиентом служит php. Так же он отдает представление всех веб-страничек, а-ля шаблонизатор.
Время, потраченное на портирование этого приложения (исключая логику работы с БД) на webmachine затратило полдня. Webmachine удивительно хорошо вписался туда. Так что наверняка есть ниша, кроме REST-API, которую может занять Webmachine. Естественно это не серебрянная пуля.
UFO just landed and posted this here
Использовал webmachine для работы с erlang сервером через WSDL. В принципе, когда разберешься, как обрабатывается wm-ресурс, через какие функции проходит http запрос и ответ, то все остальное становится просто и понятно.)
А что вы использовали для разбора WSDL? Я как-то сталкивался с этим, использовал для этого YAWS, и остался не сильно доволен
Пытаюсь собрать пример из статьи на Ubuntu 11.04. Пакеты build-essential, libncurses5-dev, openssl, libssl-dev установлены. При попытке выполнить make выдает:
Uncaught error in rebar_core: {'EXIT',{{badmatch,{error,badfile}},
[{rebar_core,select_modules,3},
{rebar_core,acc_modules,4},
{rebar_core,process_dir,4},
{rebar_core,process_commands,2},
{rebar,main,1},
{escript,run,2},
{escript,start,1},
{init,start_it,1}]}}
Из самого сообщения не могу понять, что ему не нравится. Кто-нибудь с таким сталкивался?
Похоже на проблему внутри утилиты rebar. Попробуйте скачать с гитхаба, и собрать. Может быть сругнётся на то, что ему чего-нибудь не хватает.
Большое спасибо за совет, вечером попробую и напишу, что получилось :)
Пробую собрать rebar уже на другой машине, с Ubuntu 10.04, выдает ошибку:
./bootstrap
escript: exception error: undefined function make:files/2
in function erl_eval:do_apply/5
in call from erl_eval:expr/5
in call from escript:eval_exprs/5
in call from erl_eval:local_func/5
in call from escript:interpret/3
in call from escript:start/1
in call from init:start_it/1

Попытка выполнить make по инструкции из статьи по прежнему выдает ту же самую ошибку. Вообще как-то удивительно — в эрланге принято выводить такие странные сообщения об ошибке? :) Неужели никто не пытался установить это на убунте? Вроде платформа позиционируется как промышленная…
Ну да, у меня Ubuntu 11.10 c эрлангом R14B02, на нем все замечательно запускается и работает.
seriy@seriy-desktop:~/webmachine_applications/mydemo$ make
==> mydemo (get-deps)
Pulling webmachine from {git,"git://github.com/basho/webmachine","HEAD"}
Cloning into webmachine...
==> webmachine (get-deps)
Pulling mochiweb from {git,"git://github.com/basho/mochiweb",
                           {tag,"1.5.1-riak-1.0.x-fixes"}}
Cloning into mochiweb...
==> mochiweb (get-deps)
==> mochiweb (compile)
Compiled src/mochiweb_request_tests.erl
Compiled src/mochiweb_io.erl
Compiled src/mochiglobal.erl
......
seriy@seriy-desktop:~/webmachine_applications/mydemo$ ./start.sh
Erlang R14B02 (erts-5.8.3) [source] [64-bit] [smp:4:4] [rq:4] [async-threads:0] [kernel-poll:false]


=PROGRESS REPORT==== 26-Dec-2011::16:42:15 ===
.....
Спасибо за подсказку, Сергей! Хотел дождаться 12.04 LTS, теперь буду думать — то ли апгрейдится раньше, то ли собирать erlang вручную.

Как-то меня смущает такой подход к инсталляторам и сообщениям об ошибках. Не хотел бы я столкнуться с таким в реальном проекте со сроками и бюджетом.
Сам не пользовался, но вообще для легкой сборки и установки разных релизов Erlang рекомендуют использовать github.com/spawngrid/kerl

Кстати, в R15, вышедшем буквально на днях, обновили сообщения об ошибках, добавив туда имена файлов и номера строк, в которых произошла ошибка.
Кстати, попутно появился такой вопрос: сейчас всё больше продуктов размещено не на SF, а на гитхабе, но там нет ни релизов, ни дистрибутивов, ни документации, ни треккера, ни форума чтобы задать вопрос автору — только ссылка скачать код и история коммитов — как всем этим пользоваться? Или я не там смотрю?
Все что вы перечислели есть в той или иной форме: и релизы, и дистрибутивы есть, например вики или загрузки. Вместо форума обычно используются github issues или обсуждения в pull request`ах
Спасибо за подсказку. Получается, у тех проектов, которые я смотрю, это просто отключено, а в принципе на гитхабе такие функции есть… :)
Кстати, в статье «съелся» указатель протокола, должно быть:
git clone git://github.com/basho/webmachine.git
Sign up to leave a comment.

Articles

Change theme settings