Module: RSpecBackgroundProcess::BackgroundProcess::Server

Defined in:
lib/rspec-background-process/server.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.extended(mod) ⇒ Object



12
13
14
# File 'lib/rspec-background-process/server.rb', line 12

def self.extended(mod)
	mod.allocate_ports
end

Instance Method Details

#allocate_portsObject



22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/rspec-background-process/server.rb', line 22

def allocate_ports
	base_port = @options[:base_port] or fail "no base_port option set for #{self}: #{@options}"
	port_count = @options[:port_count] or fail "no port_count option set for #{self}: #{@options}"

	global_ports = @options[:global_context][:ports] ||= Set[]

	begin
		@ports = (base_port ... base_port + port_count).to_a
		base_port += port_count
	end until (global_ports & @ports).empty?

	@options[:global_context][:ports] = global_ports + @ports
end

#allocated_port(port_no) ⇒ Object



40
41
42
# File 'lib/rspec-background-process/server.rb', line 40

def allocated_port(port_no)
	@ports[port_no.to_i - 1] or fail "no port #{port_no} allocated: #{@ports}"
end

#portsObject



36
37
38
# File 'lib/rspec-background-process/server.rb', line 36

def ports
	@ports
end

#template_variablesObject



16
17
18
19
20
# File 'lib/rspec-background-process/server.rb', line 16

def template_variables
	super.merge(
		/allocated port (\d)/ => ->(port_no) { allocated_port(port_no) }
	)
end

#to_sObject



44
45
46
# File 'lib/rspec-background-process/server.rb', line 44

def to_s
	super + "{ports: #{ports.join(', ')}}"
end