Ruby ExecJS语境中的玉

Ruby ExecJS语境中的玉,ruby,pug,execjs,Ruby,Pug,Execjs,很简单,我在从execjs中的文件运行编译的jade.js时遇到了问题 如果我在html文件中包含jade.js jade.compile 返回一个函数 当我执行以下操作时: require 'execjs' source = <<-src var window = {}; #{open('jade.js').read} var jade = window.jade; src context = ExecJS.compile source context.eval

很简单,我在从execjs中的文件运行编译的jade.js时遇到了问题

如果我在html文件中包含jade.js

jade.compile
返回一个函数

当我执行以下操作时:

require 'execjs'

source  = <<-src
  var window = {};
  #{open('jade.js').read}
  var jade = window.jade;
src
context = ExecJS.compile source
context.eval "jade.compile"
 => nil
require'execjs'

source=当execjs返回的是一个函数时,它似乎返回nil。因此:

context.eval "jade.compile.toString()"
=> "function....."
利克维尔

context.eval "jade.compile(#{template.to_json}).toString()"
=> "function...."

这是有意义的,因为的extract_result方法(在撰写本文时的第62行)使用JSON.decode,它不会对函数进行解码。只是物体的导数

context.eval "jade.compile(#{template.to_json})()"
=> "some html"