class Collab::JS::JSProcess

Public Class Methods

new() click to toggle source
# File lib/collab/js.rb, line 59
def initialize
   @node = if defined?(Rails)
             Dir.chdir(Rails.root) { open_node }
           else
             open_node
           end
end

Public Instance Methods

call(req) click to toggle source
# File lib/collab/js.rb, line 67
def call(req)
  @node.puts(req)
  res = JSON.parse(@node.gets)
  raise ::Collab::JS::JSRuntimeError.new(res["error"]) if res["error"]
  res["result"]
end

Private Instance Methods

open_node() click to toggle source
# File lib/collab/js.rb, line 75
def open_node
  IO.popen(["node", "-e", "require('@pmcp/authority/dist/rpc')"], "r+")
end