diff --git a/lib/spring/client/run.rb b/lib/spring/client/run.rb index c0de15c3..51ce51e8 100644 --- a/lib/spring/client/run.rb +++ b/lib/spring/client/run.rb @@ -6,8 +6,6 @@ module Spring module Client class Run < Command FORWARDED_SIGNALS = %w(INT QUIT USR1 USR2 INFO WINCH) & Signal.list.keys - CONNECT_TIMEOUT = 1 - BOOT_TIMEOUT = 20 attr_reader :server @@ -74,7 +72,7 @@ def boot_server env.socket_path.unlink if env.socket_path.exist? pid = Process.spawn(server_process_env, env.server_command, out: File::NULL) - timeout = Time.now + BOOT_TIMEOUT + timeout = Time.now + Spring.boot_timeout @server_booted = true @@ -85,7 +83,7 @@ def boot_server exit status.exitstatus elsif Time.now > timeout $stderr.puts "Starting Spring server with `#{env.server_command}` " \ - "timed out after #{BOOT_TIMEOUT} seconds" + "timed out after #{Spring.boot_timeout} seconds" exit 1 end @@ -122,7 +120,7 @@ def stop_server end def verify_server_version - unless IO.select([server], [], [], CONNECT_TIMEOUT) + unless IO.select([server], [], [], Spring.connect_timeout) raise "Error connecting to Spring server" end @@ -151,7 +149,7 @@ def connect_to_application(client) server.send_io client send_json server, "args" => args, "default_rails_env" => default_rails_env, "spawn_env" => spawn_env, "reset_env" => reset_env - if IO.select([server], [], [], CONNECT_TIMEOUT) + if IO.select([server], [], [], Spring.connect_timeout) server.gets or raise CommandNotFound else raise "Error connecting to Spring server" diff --git a/lib/spring/configuration.rb b/lib/spring/configuration.rb index a574a42a..cb10abd3 100644 --- a/lib/spring/configuration.rb +++ b/lib/spring/configuration.rb @@ -1,8 +1,11 @@ require "spring/errors" module Spring + @connect_timeout = 5 + @boot_timeout = 20 + class << self - attr_accessor :application_root + attr_accessor :application_root, :connect_timeout, :boot_timeout attr_writer :quiet def gemfile diff --git a/test/support/acceptance_test.rb b/test/support/acceptance_test.rb index 1aee4ef1..af2acc31 100644 --- a/test/support/acceptance_test.rb +++ b/test/support/acceptance_test.rb @@ -691,7 +691,7 @@ def exec_name test "server boot timeout" do app.env["SPRING_SERVER_COMMAND"] = "sleep 1" File.write("#{app.spring_client_config}", %( - Spring::Client::Run.const_set(:BOOT_TIMEOUT, 0.1) + Spring.boot_timeout = 0.1 )) assert_failure "bin/rails runner ''", stderr: "timed out"