0.01
No commit activity in last 3 years
No release in over 3 years
Enables Asynchronous Javascript Execution in ExecJS
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Runtime

~> 2.0.0
 Project Readme

ExecJS Async

ExecJS lets you run JavaScript code from Ruby. ExecJS Async allows you to execute, and receive results from, asynchronous javascript.

ExecJS Async supports these runtimes (will try to support more in the future, but this is an early release):

A short example:

require "execjs-async"
context = ExecJS.compile_async <<-JAVASCRIPT
  var run = function(html, code){
    var jsdom = require('jsdom');
    
    jsdom.env(html, function(errors, window) {
      callback(window.document.getElementByName('body').innerHTML);
    });
  }
JAVASCRIPT
context.call 'run', "<p>Hello World</p>"
# => "<p>Hello World</p>"

Notice the "callback" call in the compiled javascript code above. The object passed into this callback will be the result of context#call. Without ExecJS Async you would not be able to get back 'window.document.getElementByName('body').innerHTML' because jsdom.env is asynchronous. And since more and more js libs are being written asynchronously these days (thanks to the popularity of node.js), it would make sense to support it in ExecJS (even if it's hard to support it across runtimes)

Even though ExecJS supports just calling ExecJS.eval or ExecJS.exec, async only supports using ExecJS.compile_async, because that is how it is currently being used.

Installation

$ gem install execjs-async

License

Copyright (c) 2011 Eric Allam.

ExecJS is maintained by Sam Stephenson and Josh Peek.

Released under the MIT license.