lib/multi_process/process/rails.rb in multi_process-1.1.1 vs lib/multi_process/process/rails.rb in multi_process-1.2.0

- old
+ new

@@ -1,5 +1,7 @@ +# frozen_string_literal: true + class MultiProcess::Process # Provides functionality for a process that is a rails server # process. # # Include this module if required. @@ -10,41 +12,35 @@ module Rails # Server wrapper given as argument to `server` action. # attr_reader :server - # Port server should be running on. - # - # Default will be a free port determined when process is created. - # - attr_reader :port - def initialize(opts = {}) self.server = opts[:server] if opts[:server] self.port = opts[:port] if opts[:port] - super *server_command, opts + super(*server_command, opts) end def server_command - ['rails', 'server', server, '--port', port].reject(&:nil?).map(&:to_s) + ['rails', 'server', server, '--port', port].compact.map(&:to_s) end def server=(server) @server = server.to_s.empty? ? nil : server.to_s end def port=(port) - @port = port.to_i == 0 ? free_port : port.to_i + @port = port.to_i.zero? ? free_port : port.to_i end def port @port ||= free_port end def available? - fail ArgumentError.new "Cannot check availability for port #{port}." if port == 0 + raise ArgumentError.new "Cannot check availability for port #{port}." if port.zero? TCPSocket.new('localhost', port).close true rescue Errno::ECONNREFUSED, Errno::EHOSTUNREACH false @@ -68,9 +64,9 @@ def free_port socket = Socket.new(:INET, :STREAM, 0) socket.bind(Addrinfo.tcp('localhost', 0)) socket.local_address.ip_port ensure - socket.close if socket + socket&.close end end end