NodeRb

NodeRb = NodeJs - JavaScript + Ruby

Status

It could not be more prototype than it is.

Instalation

gem install noderb

Usage

Starting loop

require "noderb"

NodeRb.start do
    # Do something
end

Running code on next tick

NodeRb.next_tick do
    # Do something
end

Connecting to server

Connects to specific hostname/IP address and port using TCP.

class Handler

    include NodeRb::Connection

    def on_connect
        # Do something
        write_data("Some data")
    end

    def on_data data
        # Do something
        close_connection
    end

    def on_close
        # Do something
    end

end

NodeRb.start_client("host", port, Handler.new)

Starting server

Starts new server on specific hostname/IP address and port using TCP.

class Handler

    include NodeRb::Connection

    def on_connect
        # Do something
        write_data("Some data")
    end

    def on_data data
        # Do something
        close_connection
    end

    def on_close
        # Do something
    end

end

NodeRb.start_server("host", port, Handler)

Starting child process

Starts new process in specific directory and with specific environment.

class Handler

    include NodeRb::Process

    def on_start
        # Do something
        write_data("Some data")
    end

    def on_stdout data
        # Do something
        kill_process
    end

    def on_stderr data
        # Do something
    end

    def on_exit status, signal
        # Do something
    end
end

args = ["argument", "list"]
env = ["VAR1=value", "VAR2=value"]

NodeRb.start_process("executable", args, env, "working_directory", Handler.new)

Resolving hostnames

Resolves hostname to IP address.

NodeRb.resolve("hostname") do |ip|
    # Do something with the IP address
end

Scheduling events

Runs specified code in the future of timeout seconds.

NodeRb.once(timeout) do
    # Do something
end

Schedules new repeated event that will be called every timeout seconds.

class Handler

    include NodeRb::Timer

    def call
        # Do something
        stop_timer
    end

end

NodeRb.repeat(timeout, Handler.new)

ToDo

  • File IO
  • UDP support
  • Better documentation
  • Tests
  • ensure Windows support
  • lots, lots more

Changelog

0.0.6

  • FileSystem support

0.0.4

  • Hostname resolution
  • Timers support
  • Huge code refactorings

Compatibility

  • Ruby 1.9

Dependencies

No external dependencies except compiler for native extension.

License

MIT