class StaticRails::WaitsForConnection
Public Instance Methods
call(site)
click to toggle source
# File lib/static-rails/waits_for_connection.rb, line 3 def call(site) timeout = StaticRails.config.ping_server_timeout start = Time.new wait_message_logged = false loop do Socket.tcp(site.server_host, site.server_port, connect_timeout: 5) break rescue Errno::ECONNREFUSED, Errno::EADDRNOTAVAIL elapsed = Time.new - start if elapsed > timeout raise Error.new("Static site server \"#{site.name}\" failed to start within #{timeout} seconds. You can change the timeout with `StaticRails.config.ping_server_timeout = 42`") else unless wait_message_logged Rails.logger.info "=> Static site server \"#{site.name}\" is not yet accepting connections on #{site.server_host}:#{site.server_port}. Will try to connect for #{timeout} more seconds" wait_message_logged = true end sleep 0.3 end end end