Class: Crspec::Rails::SystemServer

Inherits:
Object
  • Object
show all
Defined in:
lib/crspec/rails/system_server.rb

Class Method Summary collapse

Class Method Details

.reset!Object



30
31
32
# File 'lib/crspec/rails/system_server.rb', line 30

def self.reset!
  @running = false
end

.running?Boolean

Returns:

  • (Boolean)


26
27
28
# File 'lib/crspec/rails/system_server.rb', line 26

def self.running?
  !!@running
end

.start_concurrent_server!(app = nil, port = 9887) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/crspec/rails/system_server.rb', line 8

def self.start_concurrent_server!(app = nil, port = 9887)
  @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