RunJS

With RunJS you can run JavaScript code from Ruby.

require 'runjs'
puts RunJS.run('return "Hello World";')

Installation

$ gem install runjs

RunJS depends on the json library. Starting with Ruby version 1.9 this is included, but on Ruby 1.8 you have to install the json gem. If this causes any problems, install the json_pure gem instead.

$ gem install json || gem install json_pure

JavaScript Runtimes

Supported runtimes

RunJS will automatically select the first available runtime from the list above.

Deprecated runtimes

To use TheRubyRhino or SpiderMonkey you have to set the runtime manually.

Set the runtime

You can control which runtime RunJS uses in your Ruby code.

RunJS.runtime = RunJS::Node

Or with the RUNJS_RUNTIME environment variable.

$ export RUNJS_RUNTIME=Node

Examples

require 'runjs'

RunJS.run('return 2 + 2;')                     # => 4
RunJS.call('Math.sqrt', 25)                    # => 5
RunJS.apply('Array.prototype.slice', '"cat"')  # => ["c", "a", "t"]

Compiling CoffeeScript

require 'runjs'
require 'open-uri'

url = 'http://jashkenas.github.com/coffee-script/extras/coffee-script.js'
compiler = open(url).read

coffee = 'alert yes'
options = { header: true, bare: true }
RunJS.context(compiler).apply('CoffeeScript.compile', 'CoffeeScript', coffee, options)

# => // Generated by CoffeeScript 1.6.3
# => alert(true);

Credits

Thanks to Sam Stephenson, Joshua Peek and the other contributors to ExecJS. Although none of the code is directly copied, the API and code structure is almost identical. While coding, the ExecJS code was consulted all the time, and RunJS ended up like a rewrite of ExecJS.

License

Copyright (c) 2013 AS Harbitz.

RunJS is released under the MIT License.