lib/utils/irb/service.rb
require 'drb' module Utils::IRB::Service class << self attr_accessor :hostname attr_accessor :port def start(uri = nil, &block) uri ||= "druby://localhost:6642" block ||= proc {} puts "Starting IRB server listening to #{uri.inspect}." DRb.start_service(uri, eval('irb_current_working_binding', block.binding)) end def connect(uri = nil) uri ||= "druby://localhost:6642" irb = DRbObject.new_with_uri(uri) Proxy.new(irb) end end class Proxy def initialize(irb) @irb = irb end def eval(code) @irb.conf.workspace.evaluate nil, code end def load(filename) unless filename.start_with?('/') filename = File.expand_path filename end @irb.load filename end end end