Sha256: 32fc18c2fa7513f1b9057162a0e87e4e0fe468664f179bc1d294bde6650af4c9
Contents?: true
Size: 1.2 KB
Versions: 1
Compression:
Stored size: 1.2 KB
Contents
# frozen_string_literal: true require "socket" module CypressRails class Server extend Forwardable attr_reader :host, :port def initialize(host) @host = host @port = find_free_port end def start spawn_server until server_responsive? sleep 0.1 end yield if block_given? stop_server end private attr_reader :pid def_delegators :configuration, :server_command, :log_path def spawn_server @pid = Process.spawn( build_command, out: [ log_path, File::WRONLY | File::CREAT | File::TRUNC, 0o600 ], err: [:child, :out] ) Process.detach(pid) end def server_responsive? system("curl #{host}:#{port}", [:out, :err] => "/dev/null") end def stop_server Process.kill("SIGINT", pid) end def build_command command = [server_command] command << "--port #{port}" command.join(" ") end def find_free_port server = ::TCPServer.new(host, 0) server.addr[1] ensure server.close if server end def configuration CypressRails.configuration end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
cypress_rails-0.1.0 | lib/cypress_rails/server.rb |