Erl_interface для ruby

19 views
Skip to first unread message

Max Lapshin

unread,
Sep 17, 2009, 8:59:36 AM9/17/09
to erlang-...@googlegroups.com
В процессе ознакомления с эрлангом, проверял как связывать его с
другими серверами.
Поскольку сама концепция ремотинга в эрланге выглядит достаточно
удачной, хотелось попробовать, как
работает его библиотека erl_interface. Работает она достаточно уныло:
несмотря на всю асинхронную
структуру самого интерпретатора, эта библиотека в её нынешнем виде
мало пригодна для внедрения в
событийно-огранизованные серверы (то, что по ошибке называется FSM),
потому что под себя требует
отдельный тред. Плюс сам по себе протокол эрланга настолько прост, что
его проще реализовать в
рамках нужного фрейморка/среды, чем использовать их библиотеку.

Короче, за выходные написана минимальная реализация эрланг-ноды на
руби, использующая eventmachine (это аналог libev/libevent).

http://github.com/maxlapshin/erlang

В сырцах пример, как подцепляется RubyIzumi (пришлось его вдоль и
поперек проползать, что бы запустить проигрывание
mp4 файлов в RTMP) и выставляется как нода.

Например это может пригодиться для того, что бы вытащить какую-нибудь
статистику в веб-морду
на рельсах из работающего демона на эрланге.

Gleb Peregud

unread,
Sep 17, 2009, 9:03:29 AM9/17/09
to erlang-...@googlegroups.com

Max Lapshin

unread,
Sep 17, 2009, 9:17:38 AM9/17/09
to erlang-...@googlegroups.com
2009/9/17 Gleb Peregud <gleb...@gmail.com>:
> Посмотрите также:
>
> http://github.com/davebryson/rinterface
позволяет только сделать один rpc вызов туда. Принять здесь сообщение
на зарегистрированный процесс,
стартовать процесс с его пидом, отдать этот уникальный пид в сеть и на
этот пид принимать сообщения, отдавая их
воркеру он не сможешь. У меня такой сценарий проходит.


> http://github.com/KDr2/erlix/
Основан на erl_interface, для использования в руби плохо пригоден,
т.к. требует отдельный тред, либо будет блокировать всё.

> http://code.google.com/p/erlectricity/
Позволяет работать только в режиме порта, что не подходит, когда надо
с веб-морды сходить к серверу

> http://code.google.com/p/a2800276/source/browse/trunk/ruby/erlang/lib
Он работает с тредами руби, что на 100% ни для чего не приемлемо, увы =(


Но за ссылки спасибо =)

Gleb Peregud

unread,
Sep 17, 2009, 9:21:52 AM9/17/09
to erlang-...@googlegroups.com
2009/9/17 Max Lapshin <max.l...@gmail.com>:

> Но за ссылки спасибо =)

Нет проблем ^_^

Max Lapshin

unread,
Sep 24, 2009, 8:55:12 AM9/24/09
to erlang-...@googlegroups.com
Код теперь может работать как независимо от рельс (в EventMachine,
например в связке с thin или любой другой софтиной, которая работает в
event-loop),
так и внутри Ruby on Rails.

Первое может пригодиться например в случае, когда хочется мониторить
веб-сервер на руби из эрланга или, например,
добираться до кишок сервера на эрланге.

Второе может потребоваться когда надо, например, показать свежий
актуальный список пользователей ejabberd в сайте на рельсах,
мониторить длину очередей в RabbitMQ
или общаться с comet-сервером напрямую. Этот механизм уже не
использует EventMachine, поэтому совместим с рельсами, но
работает синхронно и блокирует сайт на время запроса (для рельс это нормально).

Поддерживается большинство термов, передаваемых эрлангом по сети, и в
отличие от того же erlix-а, типы эрланга
мапятся по возможности напрямую в руби.

Reply all
Reply to author
Forward
0 new messages