gxg-web-client/gxg/core/console.rb
2021-11-16 08:58:51 -08:00

31 lines
619 B
Ruby

module Rubinius
module Console
class Server
attr_reader :inbox
attr_reader :outbox
attr_reader :thread
def initialize
@inbox = Channel.new
@outbox = Channel.new
@thread = Thread.new do
source = @inbox.receive
break unless source.size
@outbox.send evaluate(source)
end
end
private :initialize
def evaluate(source)
begin
eval(source, TOPLEVEL_BINDING, "(console)", 1).inspect
rescue Object => e
e.message + e.backtrace.join("\n")
end
end
end
end
end