Opal: Ruby runtime for the browser
Opal is a ruby runtime and core library implementation written in Javascript. It is intended, but not limited to, running in the Browser. It has been tested IE6+, as well as Safari, Firefox, Chrome, Opera, as well as various mobile browsers (iOS, Android, webOS etc).
The project consists of two parts, the runtime and core libraries being the first, and the "server side" build tools.
Build tools: "Vienna"
Vienna is a gem that once installed provides the build tools needed for compiling the ruby into opal compatible javascript. The build tools also come with server functionality, allowing dynamic project building for easier development needs.
Runtime/core libraries: "Opal"
Opal is a ruby implementation written in Javascript. It aims to be as syntactically compatible as possible. It also aims to be as efficient as possible. The core ruby libraries (Array, String, Hash etc) are all written in ruby. Opal, at its core, has the idea of an "opal". An opal is the same idea as a gem in vanilla Ruby. An opal can be required into a project at runtime, and is a self contained directory with all the relevant lib, bin etc files that make it up. The core library itself is an opal, and is always required into a project before any user code runs. All other code, as well as the user's project itself, is treated as an opal. The main opals distributed with vienna are outlined below.
opal (runtime)
Opal contains an implementation of the ruby core library. It is written in Ruby. See Opal documentation.
browser
The browser opal provides an API for DOM access and manipulation, as well as various classes for interacting with browser features such as XMLHttpRequest, storage, cookies, Elements etc. It is written from the ground up to wrap around native, cross browser DOM access. It is loosely based on MooTools, but focusses on allowing small, clean code for the browser. See Browser documentation for more information.
spec
The spec opal is an implementation of RSpec, in ruby, that is used for all spec testing within vienna. Opal, Browser and CherryKit all have spec tests in their spec/ directories. To run specs, see the Spec documentation.
cherry_kit
cherry_kit, or "CherryKit" is an opal designed for developing rich web applications that run within the browser. It is loosely based on Cocoa/CocoaTouch, but has more of a ruby "daz". It has been built from the ground up to target IE6+, as well as touch platforms (iOS, Android etc). It features KeyValueCoding, KeyValueObserving, Delegates, Bindings, Views, Responder Chain and Controllers, all found in Cocoa(Touch). It is only partially implemented, so see the documentation for examples and how to work with what is already there.