template = <<~HBS {{attach widget="widget-name" attrs=attrs}} {{a}} {{{htmlValue}}} {{#if state.category}} {{attach widget="category-display" attrs=(hash category=state.category someNumber=123 someString="wat")}} {{/if}} {{#each transformed.something as |s|}} {{s.wat}} {{/each}} {{attach widget=settings.widgetName}} {{#unless settings.hello}} XYZ {{/unless}} HBS ctx = MiniRacer::Context.new(timeout: 15000) ctx.eval("var self = this; #{File.read("#{Rails.root}/vendor/assets/javascripts/babel.js")}") ctx.eval(File.read(Ember::Source.bundled_path_for('ember-template-compiler.js'))) ctx.eval("module = {}; exports = {};") ctx.attach("rails.logger.info", proc { |err| puts(err.to_s) }) ctx.attach("rails.logger.error", proc { |err| puts(err.to_s) }) ctx.eval <<JS console = { prefix: "", log: function(msg){ rails.logger.info(console.prefix + msg); }, error: function(msg){ rails.logger.error(console.prefix + msg); } } JS source = File.read("#{Rails.root}/lib/javascripts/widget-hbs-compiler.js.es6") ctx.eval(source) js_source = ::JSON.generate(template, quirks_mode: true) puts ctx.eval("exports.compile(#{js_source})")