HTTP/2 302
server: nginx
date: Wed, 24 Dec 2025 01:36:43 GMT
content-type: text/plain; charset=utf-8
content-length: 0
x-archive-redirect-reason: found capture at 20090124231215
location: https://web.archive.org/web/20090124231215/https://rb2js.rubyforge.org/
server-timing: captures_list;dur=0.497738, exclusion.robots;dur=0.034577, exclusion.robots.policy;dur=0.023577, esindex;dur=0.009597, cdx.remote;dur=14.183998, LoadShardBlock;dur=1187.102322, PetaboxLoader3.resolve;dur=1070.130741, PetaboxLoader3.datanode;dur=82.969314
x-app-server: wwwb-app214-dc8
x-ts: 302
x-tr: 1227
server-timing: TR;dur=0,Tw;dur=0,Tc;dur=0
set-cookie: wb-p-SERVER=wwwb-app214; path=/
x-location: All
x-as: 14061
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, 24 Dec 2025 01:36:44 GMT
content-type: text/html
x-archive-orig-date: Sat, 24 Jan 2009 23:12:15 GMT
x-archive-orig-server: Apache
x-archive-orig-last-modified: Thu, 20 Jul 2006 22:23:26 GMT
x-archive-orig-etag: "1760f9a-a9e-4190ad41ed380"
x-archive-orig-accept-ranges: bytes
x-archive-orig-content-length: 2718
x-archive-orig-vary: Accept-Encoding
x-archive-orig-connection: close
x-archive-guessed-content-type: text/html
x-archive-guessed-charset: utf-8
memento-datetime: Sat, 24 Jan 2009 23:12:15 GMT
link:
; rel="timegate"
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: 51_7_20090124225454_crawl101-c/51_7_20090124231048_crawl100.arc.gz
server-timing: captures_list;dur=0.546438, exclusion.robots;dur=0.018604, exclusion.robots.policy;dur=0.008289, esindex;dur=0.011494, cdx.remote;dur=19.268913, LoadShardBlock;dur=238.267139, PetaboxLoader3.datanode;dur=145.092388, PetaboxLoader3.resolve;dur=122.900679, load_resource;dur=177.804843
x-app-server: wwwb-app214-dc8
x-ts: 200
x-tr: 471
server-timing: TR;dur=0,Tw;dur=0,Tc;dur=0
x-location: All
x-as: 14061
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
rb2js/Ruby to JavaScript
About
The rb2js project has its roots in the proof-of-concept Ruby to JavaScript converter which I posted to the ruby-talk mailing list a few weeks ago.
So far, all work is being done by me, Paul Battley. See below if you’d like to get involved in some way.
Current status
The first hurdle, converting a subset of Ruby code into working JavaScript, has already been achieved. However, it requires specially-written Ruby code. We can do better.
The next stage involves creating a close approximation of a Ruby object and class system in JavaScript.
I’ve now got a basic Ruby object system working in JavaScript. I’ve also implemented some basic String and Kernel methods so that the following JavaScript code actually works:
var s = RbString.box('Hello');
rbSendMessage(s, '<<', [' World']);
rbSendMessage(RbRootObject.getConstant('Kernel'), 'puts', [s]);
It’s analogous to this in Ruby:
s = 'Hello'
s << ' World'
Kernel.puts(s)
Instantiation isn’t yet possible except in the special case of boxed strings. Implementing Class properly is the next major step.
Get involved
The current code is available via Subversion:
svn co svn://rubyforge.org//var/svn/rb2js/sandbox
If you’d like to help or just follow along, please join the mailing list.
Contact
Send an email to pbattley@gmail.com.
Paul Battley, 20th July 2006