Sha256: b987aa3f4fcb6bbf6c448ed7dfaaae01e380801017a36383c8a1bf6f0ebc641f

Contents?: true

Size: 802 Bytes

Versions: 52

Compression:

Stored size: 802 Bytes

Contents

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

Version data entries

52 entries across 52 versions & 1 rubygems

Version Path
utils-0.18.0 lib/utils/irb/service.rb
utils-0.17.0 lib/utils/irb/service.rb
utils-0.16.0 lib/utils/irb/service.rb
utils-0.15.1 lib/utils/irb/service.rb
utils-0.15.0 lib/utils/irb/service.rb
utils-0.14.0 lib/utils/irb/service.rb
utils-0.13.0 lib/utils/irb/service.rb
utils-0.12.0 lib/utils/irb/service.rb
utils-0.11.0 lib/utils/irb/service.rb
utils-0.10.1 lib/utils/irb/service.rb
utils-0.10.0 lib/utils/irb/service.rb
utils-0.9.0 lib/utils/irb/service.rb