mojombo / ernie

Ernie is an Erlang/Ruby BERT-RPC Server.

This URL has Read+Write access

ernie /
name age message
file .document Mon May 18 16:40:10 -0700 2009 add tests and unify cli [mojombo]
file .gitignore Mon May 18 18:38:26 -0700 2009 add erlang build stuff [mojombo]
file LICENSE Mon May 18 16:40:10 -0700 2009 add tests and unify cli [mojombo]
file README.md Loading commit data...
file Rakefile
file VERSION.yml
directory bin/
directory ebin/ Mon May 18 16:15:19 -0700 2009 add handler cli param and fix up to actually work [mojombo]
directory elib/
file ernie.gemspec
directory examples/
directory ext/ Mon May 18 18:38:26 -0700 2009 add erlang build stuff [mojombo]
directory lib/
directory test/
README.md

Ernie

By Tom Preston-Werner (tom@mojombo.com)

WARNING: This software is alpha and should not be used in production without extensive testing. You should not consider this project production ready until it is released as 1.0.

Description

Ernie is a BERT-RPC server implementation that uses an Erlang server to accept incoming connections, and then delegates the request to a Ruby handler via Erlectricity.

Installation

You must have Erlang installed before installing Ernie.

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

Running

Usage: ernie [command] [options]
    -h, --handler HANDLER            Handler file
    -p, --port PORT                  Port
    -n, --number NUMBER              Number of handler instances
    -d, --detached                   Run as a daemon
    -P, --pidfile PIDFILE            Location to write pid file.

Commands:
  <none>                Start an Ernie server.
  reload-handlers       Gracefully reload all of the the ruby handlers
                        and use the new code for all subsequent requests.

Examples:
  ernie -d -p 9999 -n 10 -h calc.rb
    Start the ernie server in the background on port 9999 with ten
    handlers, using the calc.rb handler file.

  ernie reload-handlers -p 9999
    Reload the handlers for the ernie server currently running on
    port 9999.

Example Handler

require 'ernie'

mod(:calc) do
  fun(:add) do |a, b|
    a + b
  end
end

Example BERT-RPC call for above example

-> {call, calc, add, [1, 2]}

<- {reply, 3}

Using the BERTRPC gem to make calls to Ernie

You can make BERT-RPC calls from Ruby with the BERTRPC gem:

require 'bertrpc'

svc = BERTRPC::Service.new('localhost', 8000)
svc.call.calc.add(1, 2)
# => 3

Contribute

If you'd like to hack on Ernie, start by forking my repo on GitHub:

http://github.com/mojombo/ernie

To get all of the dependencies, install the gem first. The best way to get your changes merged back into core is as follows:

  1. Clone down your fork
  2. Create a topic branch to contain your change
  3. Hack away
  4. Add tests and make sure everything still passes by running rake
  5. If you are adding new functionality, document it in the README.md
  6. Do not change the version number, I will do that on my end
  7. If necessary, rebase your commits into logical chunks, without errors
  8. Push the branch up to GitHub
  9. Send me (mojombo) a pull request for your branch

Copyright

Copyright (c) 2009 Tom Preston-Werner. See LICENSE for details.