Class: Server::Starter::PumaListener

Inherits:
Object
  • Object
show all
Defined in:
lib/server/starter/puma_listener.rb

Class Method Summary collapse

Class Method Details

.listenObject



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/server/starter/puma_listener.rb', line 6

def self.listen
  return nil unless ENV.key?('SERVER_STARTER_PORT')
  ENV['SERVER_STARTER_PORT'].split(';').map.with_index do |x, i|
    path_or_port, fd = x.split('=', 2)
    if path_or_port.match(/(?:^|:)\d+$/)
      url = "tcp://#{path_or_port}"
    else
      url = "unix://#{path_or_port}"
    end
    if Gem::Version.new(Puma::Const::PUMA_VERSION) < Gem::Version.new('5')
      ENV["PUMA_INHERIT_#{i}"] = "#{fd}:#{url}"
    else
      ENV['LISTEN_FDS'] = '1'
      ENV['LISTEN_PID'] = Process.pid.to_s
    end
    { fd: fd, url: url }
  end
end