public
Rubygem
Description: Erlectricity exposes Ruby to Erlang and vice versa.
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 Thu Jun 05 00:05:40 -0700 2008 update readme with github gem source and contri... [mojombo]
file Rakefile Fri Mar 07 15:18:47 -0800 2008 add ext to hoe [mojombo]
file erlectricity.gemspec Wed Jun 04 23:51:27 -0700 2008 fix rubygems version in gemspec [mojombo]
directory examples/ Wed Jun 04 23:23:08 -0700 2008 add simple readme and simple echo example [mojombo]
directory ext/ Fri Mar 07 17:30:29 -0800 2008 fix nil terminated lists in ruby and c decoders [mojombo]
directory lib/ Fri Mar 07 17:30:29 -0800 2008 fix nil terminated lists in ruby and c decoders [mojombo]
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

-or-

$ gem install mojombo-erlectricity -s http://gems.github.com

== CONTRIBUTE:

Contributions are welcome via GitHub! Fork the code from
http://github.com/mojombo/erlectricity and send a pull request to mojombo.

== 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.