class SpreadBeaver::Runner
Constants
- QUEUE_KEY
Public Class Methods
exec(module_name, props)
click to toggle source
# File lib/spread_beaver/runner.rb, line 13 def self.exec module_name, props @@pool.with do |r| r.exec module_name, props end end
queue(module_name, props)
click to toggle source
# File lib/spread_beaver/runner.rb, line 19 def self.queue module_name, props if RequestStore.store[QUEUE_KEY].nil? RequestStore.store[QUEUE_KEY] = [] end RequestStore.store[QUEUE_KEY].push module_name: module_name, props: props end
setup!(bundle, opts={size: 10, timeout: 20})
click to toggle source
# File lib/spread_beaver/runner.rb, line 7 def self.setup! bundle, opts={size: 10, timeout: 20} @@bundle = bundle @@pool.shutdown{} if @@pool @@pool = ConnectionPool.new(opts) { self.new } end
Public Instance Methods
exec(module_name, props)
click to toggle source
# File lib/spread_beaver/runner.rb, line 26 def exec module_name, props js_code = "(function() {" js_code += initialize_script if !initialize_script.nil? if !RequestStore.store[self.class::QUEUE_KEY].nil? RequestStore.store[self.class::QUEUE_KEY].each do |store| str = exec_queued_module store[:module_name], store[:props] js_code += str if !str.nil? end end js_code += "return #{exec_module module_name, props}" js_code += "})()" context.eval(js_code).html_safe end
Private Instance Methods
context()
click to toggle source
# File lib/spread_beaver/runner.rb, line 42 def context @context ||= ExecJS.compile <<-JS var global = {}; #{@@bundle} JS end
exec_module(module_name, props)
click to toggle source
# File lib/spread_beaver/runner.rb, line 59 def exec_module module_name, props raise "Override this." end
exec_queued_module(module_name, props)
click to toggle source
# File lib/spread_beaver/runner.rb, line 54 def exec_queued_module module_name, props #Override this. nil end
initialize_script()
click to toggle source
# File lib/spread_beaver/runner.rb, line 49 def initialize_script #Override this. nil end
props_to_s(props)
click to toggle source
# File lib/spread_beaver/runner.rb, line 63 def props_to_s props if props.is_a? String props else props.to_json end end