Class: Crspec::Rails::SystemServer
- Inherits:
-
Object
- Object
- Crspec::Rails::SystemServer
- Defined in:
- lib/crspec/rails/system_server.rb
Class Method Summary collapse
-
.effective_port(port) ⇒ Object
The effective port is offset by TEST_ENV_NUMBER so concurrent --processes children never collide on the same listener.
- .reset! ⇒ Object
- .running? ⇒ Boolean
- .start_concurrent_server!(app = nil, port = 9887) ⇒ Object
Class Method Details
.effective_port(port) ⇒ Object
The effective port is offset by TEST_ENV_NUMBER so concurrent --processes children never collide on the same listener.
10 11 12 |
# File 'lib/crspec/rails/system_server.rb', line 10 def self.effective_port(port) port + ENV.fetch("TEST_ENV_NUMBER", "").to_i end |
.reset! ⇒ Object
37 38 39 |
# File 'lib/crspec/rails/system_server.rb', line 37 def self.reset! @running = false end |
.running? ⇒ Boolean
33 34 35 |
# File 'lib/crspec/rails/system_server.rb', line 33 def self.running? !!@running end |
.start_concurrent_server!(app = nil, port = 9887) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/crspec/rails/system_server.rb', line 14 def self.start_concurrent_server!(app = nil, port = 9887) port = effective_port(port) @server_mutex ||= Mutex.new @server_mutex.synchronize do return if @running if defined?(Puma::Server) rack_app = app || (defined?(::Rails) && ::Rails.respond_to?(:application) ? ::Rails.application : nil) return unless rack_app events = defined?(Puma::Events) ? Puma::Events.null : nil server = Puma::Server.new(rack_app, events, { min_threads: 1, max_threads: Etc.nprocessors }) server.add_tcp_listener("127.0.0.1", port) Thread.new { server.run } end @running = true end end |