module CJSONCI::Servant
Public Class Methods
run!()
click to toggle source
# File lib/cjsonci/servant.rb, line 5 def self.run! loop do obj = read_input result = eval_input(obj) puts format_message(result).to_json end end
Private Class Methods
eval_input(obj)
click to toggle source
# File lib/cjsonci/servant.rb, line 34 def self.eval_input(obj) code = obj["eval"] eval_result = nil begin eval_result = TOPLEVEL_BINDING.eval code.to_s rescue Exception => ex eval_result = ex end case eval_result.class.name when "SignalException" case eval_result.message when "SIGTERM" exit 0 end when "SystemExit" exit 0 end eval_result end
format_message(result)
click to toggle source
# File lib/cjsonci/servant.rb, line 56 def self.format_message(result) if result.is_a? Exception { type: "error", class: result.class, message: result, } else { type: "ok", result: result, } end end
read_input()
click to toggle source
# File lib/cjsonci/servant.rb, line 15 def self.read_input input = "" obj = nil loop do line = STDIN.gets exit 0 unless line input << line begin obj = JSON.parse(input) rescue end break if obj end obj end