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.44.0 lib/utils/irb/service.rb
utils-0.43.0 lib/utils/irb/service.rb
utils-0.42.0 lib/utils/irb/service.rb
utils-0.41.0 lib/utils/irb/service.rb
utils-0.40.0 lib/utils/irb/service.rb
utils-0.39.0 lib/utils/irb/service.rb
utils-0.38.0 lib/utils/irb/service.rb
utils-0.37.1 lib/utils/irb/service.rb
utils-0.37.0 lib/utils/irb/service.rb
utils-0.36.0 lib/utils/irb/service.rb
utils-0.35.0 lib/utils/irb/service.rb
utils-0.34.0 lib/utils/irb/service.rb
utils-0.33.1 lib/utils/irb/service.rb
utils-0.33.0 lib/utils/irb/service.rb
utils-0.32.0 lib/utils/irb/service.rb
utils-0.31.1 lib/utils/irb/service.rb
utils-0.31.0 lib/utils/irb/service.rb
utils-0.30.2 lib/utils/irb/service.rb
utils-0.30.1 lib/utils/irb/service.rb
utils-0.30.0 lib/utils/irb/service.rb