THIS FORK OF ENV.JS IS MOTHBALLED¶ ↑
The Johnson fork of env.js is pretty much mothballed (which is already pretty much true of Johnson, given the rise of v8 and the difficulty moving Johnson to 1.9.*). The current best practices seem to be based on a headless webkit.
env.js¶ ↑
-
#envjs @ freenode
Description¶ ↑
A browser environment for javascript interpreters.
This is a fork of the env.js project (github.com/thatcher/env-js/). See that link for env.js details. This fork is based on the Johnson Ruby gem (github.com/jbarnette/johnson).
Installation¶ ↑
For now, you can install the envjs gem by installing Johnson:
gem install johnson --prerelease
and then installing the envjs gem with
gem install envjs
Using envjs interactively¶ ↑
The envjs gem provides the envjsrb command, which functions as an extended version of the Johnson javascript shell. For example:
mbp:env-js smparkes$ envjsrb js> this => [object Window 0] js> window.location => about:blank js> document.innerHTML => "<html><head><title></title></head><body></body></html>" js>
Embedding envjs¶ ↑
It’s also possible to embed the envjs interpreter similar to the way it’s done in Johnson, e.g.,
require 'rubygems' # if necessary require 'johnson/tracemonkey' require 'envjs/runtime' envjs = Johnson::Runtime.new envjs.extend Envjs::Runtime window = envjs.evaluate("window") puts window.location.to_s # == "about:blank" puts window.document.innerHTML # == "<html><head><title></title></head><body></body></html>" envjs.wait
You need the Runtime#wait at the end to give env.js’s event loop a chance to execute queued events and timers. You may need to do this at other times as well, depending on the asynchronous nature of your application.
License¶ ↑
See github.com/smparkes/env-js/blob/envjsrb/licenses/MIT-LICENSE.txt and github.com/smparkes/env-js/blob/envjsrb/licenses/GPL-LICENSE.txt.