Class: Spec::Runner::DrbCommandLine

Inherits:
Object
  • Object
show all
Defined in:
lib/spec/runner/drb_command_line.rb

Overview

Facade to run specs by connecting to a DRB server

Class Method Summary collapse

Class Method Details

.port(options) ⇒ Object


8
9
10
# File 'lib/spec/runner/drb_command_line.rb', line 8

def self.port(options)
  (options.drb_port || ENV["RSPEC_DRB"] || 8989).to_i
end

.run(options) ⇒ Object

Runs specs on a DRB server. Note that this API is similar to that of CommandLine - making it possible for clients to use both interchangeably.


14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/spec/runner/drb_command_line.rb', line 14

def self.run(options)
  begin
    begin; \
      DRb.start_service("druby://localhost:0"); \
    rescue SocketError, Errno::EADDRNOTAVAIL; \
      DRb.start_service("druby://:0"); \
    end
    spec_server = DRbObject.new_with_uri("druby://127.0.0.1:#{port(options)}")
    spec_server.run(options.argv, options.error_stream, options.output_stream)
    true
  rescue DRb::DRbConnError
    options.error_stream.puts "No server is running"
    false
  end
end