CARVIEW |
Select Language
HTTP/2 302
server: nginx
date: Wed, 03 Sep 2025 01:09:02 GMT
content-type: text/plain; charset=utf-8
content-length: 0
x-archive-redirect-reason: found capture at 20090116013612
location: https://web.archive.org/web/20090116013612/https://github.com/bmizerany/rebar/tree
server-timing: captures_list;dur=0.809040, exclusion.robots;dur=0.028782, exclusion.robots.policy;dur=0.012729, esindex;dur=0.012521, cdx.remote;dur=36.970668, LoadShardBlock;dur=255.136650, PetaboxLoader3.datanode;dur=151.576161, PetaboxLoader3.resolve;dur=81.922699
x-app-server: wwwb-app203
x-ts: 302
x-tr: 417
server-timing: TR;dur=0,Tw;dur=0,Tc;dur=0
set-cookie: wb-p-SERVER=wwwb-app203; path=/
x-location: All
x-rl: 0
x-na: 0
x-page-cache: MISS
server-timing: MISS
x-nid: DigitalOcean
referrer-policy: no-referrer-when-downgrade
permissions-policy: interest-cohort=()
HTTP/2 301
server: nginx
date: Wed, 03 Sep 2025 01:09:02 GMT
content-type: text/html; charset=utf-8
content-length: 111
x-archive-orig-server: nginx/0.6.26
x-archive-orig-date: Fri, 16 Jan 2009 01:36:11 GMT
x-archive-orig-connection: close
x-archive-orig-status: 301 Moved Permanently
location: https://web.archive.org/web/20090116013612/https://github.com/bmizerany/rebar/tree/master
x-archive-orig-x-runtime: 23ms
x-archive-orig-cache-control: no-cache
x-archive-orig-content-length: 111
cache-control: max-age=1800
memento-datetime: Fri, 16 Jan 2009 01:36:12 GMT
link: ; rel="original", ; rel="timemap"; type="application/link-format", ; rel="timegate", ; rel="first memento"; datetime="Wed, 24 Sep 2008 13:39:44 GMT", ; rel="prev memento"; datetime="Wed, 24 Sep 2008 13:39:44 GMT", ; rel="memento"; datetime="Fri, 16 Jan 2009 01:36:12 GMT", ; rel="last memento"; datetime="Fri, 16 Jan 2009 01:36:12 GMT"
content-security-policy: default-src 'self' 'unsafe-eval' 'unsafe-inline' data: blob: archive.org web.archive.org web-static.archive.org wayback-api.archive.org athena.archive.org analytics.archive.org pragma.archivelab.org wwwb-events.archive.org
x-archive-src: 52_7_20090116011028_crawl104-c/52_7_20090116013335_crawl103.arc.gz
server-timing: captures_list;dur=0.656713, exclusion.robots;dur=0.021327, exclusion.robots.policy;dur=0.010785, esindex;dur=0.012971, cdx.remote;dur=5.599346, LoadShardBlock;dur=126.270100, PetaboxLoader3.datanode;dur=123.742267, PetaboxLoader3.resolve;dur=82.560290, load_resource;dur=134.288568
x-app-server: wwwb-app203
x-ts: 301
x-tr: 289
server-timing: TR;dur=0,Tw;dur=0,Tc;dur=0
x-location: All
x-rl: 0
x-na: 0
x-page-cache: MISS
server-timing: MISS
x-nid: DigitalOcean
referrer-policy: no-referrer-when-downgrade
permissions-policy: interest-cohort=()
HTTP/2 200
server: nginx
date: Wed, 03 Sep 2025 01:09:03 GMT
content-type: text/html; charset=utf-8
x-archive-orig-server: nginx/0.6.31
x-archive-orig-date: Fri, 16 Jan 2009 01:36:12 GMT
x-archive-orig-connection: close
x-archive-orig-status: 200 OK
x-archive-orig-x-runtime: 613ms
x-archive-orig-etag: "13a92f36e3cb02dc54591265a59a2fe8"
x-archive-orig-cache-control: private, max-age=0, must-revalidate
x-archive-orig-content-length: 15162
x-archive-guessed-content-type: text/html
x-archive-guessed-charset: utf-8
memento-datetime: Fri, 16 Jan 2009 01:36:12 GMT
link: ; rel="original", ; rel="timemap"; type="application/link-format", ; rel="timegate", ; rel="first memento"; datetime="Sat, 13 Sep 2008 21:27:24 GMT", ; rel="prev memento"; datetime="Wed, 24 Sep 2008 13:39:44 GMT", ; rel="memento"; datetime="Fri, 16 Jan 2009 01:36:12 GMT", ; rel="next memento"; datetime="Sat, 17 Jan 2009 04:44:06 GMT", ; rel="last memento"; datetime="Sat, 17 Jan 2009 04:44:06 GMT"
content-security-policy: default-src 'self' 'unsafe-eval' 'unsafe-inline' data: blob: archive.org web.archive.org web-static.archive.org wayback-api.archive.org athena.archive.org analytics.archive.org pragma.archivelab.org wwwb-events.archive.org
x-archive-src: 52_7_20090116011028_crawl104-c/52_7_20090116013335_crawl103.arc.gz
server-timing: captures_list;dur=0.644289, exclusion.robots;dur=0.023853, exclusion.robots.policy;dur=0.011008, esindex;dur=0.013195, cdx.remote;dur=11.972044, LoadShardBlock;dur=71.328010, PetaboxLoader3.datanode;dur=58.226712, PetaboxLoader3.resolve;dur=88.387817, load_resource;dur=77.930372
x-app-server: wwwb-app203
x-ts: 200
x-tr: 221
server-timing: TR;dur=0,Tw;dur=0,Tc;dur=0
x-location: All
x-rl: 0
x-na: 0
x-page-cache: MISS
server-timing: MISS
x-nid: DigitalOcean
referrer-policy: no-referrer-when-downgrade
permissions-policy: interest-cohort=()
content-encoding: gzip
bmizerany's rebar at master - GitHub
This repository is private.
All pages are served over SSL and all pushing and pulling is done over SSH.
No one may fork, clone, or view it unless they are added as a member.
Every repository with this icon (
) is private.
Every repository with this icon (

This repository is public.
Anyone may fork, clone, or view it.
Every repository with this icon (
) is public.
Every repository with this icon (

Fork of mojombo/rebar | |
Clone URL: |
git://github.com/bmizerany/rebar.git
Give this clone URL to anyone.
git clone git://github.com/bmizerany/rebar.git
|
rebar /
name | age | message | |
---|---|---|---|
![]() |
README | Loading commit data... ![]() |
|
![]() |
client.rb | ||
![]() |
funs.erl | ||
![]() |
json.erl | ||
![]() |
mochiweb_socket_server.erl | ||
![]() |
rebar.erl |
rebar by Tom Preston-Werner With Moore's Law about to crumble from beneath our feet, we all need to start thinking about how to make use of those 64 core processors we'll be rockin' in our laptops in a few years. Ruby is an amazing language for many tasks, but sadly concurrent programming is not one of them. In preparation for the future I could consider dropping Ruby altogether and find another more appropriate language. But that would be madness. Ruby is awesome. What if I could still write the bulk of my projects in Ruby, but farm out the threaded stuff to the concurrency mercenary that is Erlang? That would be cool, right? Consider a small Erlang module: -module(funs). -export([add/2, cat/2, fac/1]). add(A, B) -> A + B. cat(A, B) -> A ++ B. fac(N) -> fac(1, N). fac(Memo, 0) -> Memo; fac(Memo, N) -> fac(Memo * N, N - 1). I'd like to be able to call these Erlang functions from my Ruby code without a lot of fuss. Hmm, how's this for a low-fuss approach: require 'rebar' funs = Rebar::Erlang.new(:funs, '127.0.0.1', 5500) funs.add(1, 2) # => 3 funs.cat("foo", "bar") # => "foobar" funs.fac(10) # => 3628800 Wow, that would be nice. Good thing I just spent the last two days writing some code to make it a reality! The library is called Rebar (Ruby to Erlang Bridge And Runner). Rebar has two parts: an Erlang server and a Ruby client. The server listens for JSON-RPC requests, calls the specified Erlang function, and responds with a JSON-RPC response. The Ruby client object simply accepts any method name, captures it with method_missing, wraps everything up in a JSON-RPC request, fires it off, waits for the response, and then extracts the result out of the JSON-RPC response, returning it like a normal Ruby call.
This feature is coming soon. Sit tight!