erlang和ruby互相调用

erlang调用ruby

https://github.com/mojombo/erlectricity

ruby调用erlang

https://github.com/davebryson/rinterface

安装

gem install rinterface

注意:

节点名必须是sname

示例代码

ruby的

require 'rinterface'

r = Erlang::Node.rpc("math","math_server","add",[10,20])

 if r[0] == :badrpc
   puts "Got and Error. Reason #{r[1]}"
 else
   puts "Success: #{r[1]}"
 end

erlang的

-module(math_server).
-export([start/0,add/2]).

start() ->
    register(?MODULE,spawn(fun() -> loop() end)).

add(X,Y) ->
    ?MODULE ! {self(),add,X,Y},
    receive
    {?MODULE,Response} -> Response
    end.

loop() ->
    receive
    {From,add,X,Y} ->
        error_logger:info_msg("Got the request, and doing the add...~n"),
        Sum = X+Y,
        From ! {?MODULE,Sum},
        loop();
    Any ->
        error_logger:info_msg("Got a crazy msg: ~p~n",[Any]),
        loop()
    end.

亲测可用