public
Description: Erlectricity exposes Ruby to Erlang and vice versa.
Homepage:
Clone URL: git://github.com/mojombo/erlectricity.git
name age message
file .gitignore Wed Jun 04 23:24:43 -0700 2008 ignore build files and pkg [mojombo]
file CONTRIBUTORS Fri Mar 07 15:16:07 -0800 2008 from svn [mojombo]
file History.txt Fri Mar 07 15:16:07 -0800 2008 from svn [mojombo]
file Manifest.txt Fri Mar 07 15:40:39 -0800 2008 update manifest [mojombo]
file README.txt Loading commit data...
file Rakefile Fri Mar 07 15:18:47 -0800 2008 add ext to hoe [mojombo]
file erlectricity.gemspec
directory examples/
directory ext/ Fri Mar 07 17:30:29 -0800 2008 fix nil terminated lists in ruby and c decoders [mojombo]
directory lib/
file setup.rb Fri Mar 07 15:16:07 -0800 2008 from svn [mojombo]
directory test/ Fri Mar 07 17:30:29 -0800 2008 fix nil terminated lists in ruby and c decoders [mojombo]
README.txt
erlectricity
  by Scott Fleckenstein
     Tom Preston-Werner
     
     http://github.com/mojombo/erlectricity
     
== DESCRIPTION:

Erlectricity allows a Ruby program to receive and respond to Erlang messages
sent over the Erlang binary protocol.

== INSTALL:

$ gem install erlectricity

== USAGE (Ruby side):

require 'rubygems'
require 'erlectricity'
require 'stringio'

receive do |f|
  f.when(:echo, String) do |text|
    f.send!(:result, "You said: #{text}")
    f.receive_loop
  end
end

== USAGE (Erlang side):

-module(echo).
-export([test/0]).

test() ->
  Cmd = "ruby echo.rb",
  Port = open_port({spawn, Cmd}, [{packet, 4}, use_stdio, exit_status, binary]), 
  Payload = term_to_binary({echo, <<"hello world!">>}),
  port_command(Port, Payload),
  receive
    {Port, {data, Data}} ->
      {result, Text} = binary_to_term(Data),
      io:format("~p~n", [Text])
  end.