Class: Capybara::Server
- Inherits:
-
Object
show all
- Defined in:
- lib/capybara/server.rb,
lib/capybara/server/middleware.rb,
lib/capybara/server/animation_disabler.rb
Defined Under Namespace
Classes: AnimationDisabler, Middleware
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(app, *deprecated_options, port: Capybara.server_port, host: Capybara.server_host, reportable_errors: Capybara.server_errors, extra_middleware: []) ⇒ Server
Returns a new instance of Server.
19
20
21
22
23
24
25
26
27
28
29
30
|
# File 'lib/capybara/server.rb', line 19
def initialize(app, *deprecated_options, port: Capybara.server_port, host: Capybara.server_host, reportable_errors: Capybara.server_errors, extra_middleware: [])
warn "Positional arguments, other than the application, to Server#new are deprecated, please use keyword arguments" unless deprecated_options.empty?
@app = app
@extra_middleware =
@server_thread = nil @host = deprecated_options[1] || host
@reportable_errors = deprecated_options[2] || reportable_errors
@using_ssl = false
@port = deprecated_options[0] || port
@port ||= Capybara::Server.ports[port_key]
@port ||= find_available_port(host)
end
|
Instance Attribute Details
#app ⇒ Object
Returns the value of attribute app.
17
18
19
|
# File 'lib/capybara/server.rb', line 17
def app
@app
end
|
#host ⇒ Object
Returns the value of attribute host.
17
18
19
|
# File 'lib/capybara/server.rb', line 17
def host
@host
end
|
#port ⇒ Object
Returns the value of attribute port.
17
18
19
|
# File 'lib/capybara/server.rb', line 17
def port
@port
end
|
Class Method Details
.ports ⇒ Object
12
13
14
|
# File 'lib/capybara/server.rb', line 12
def ports
@ports ||= {}
end
|
Instance Method Details
#boot ⇒ Object
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
# File 'lib/capybara/server.rb', line 75
def boot
unless responsive?
Capybara::Server.ports[port_key] = port
@server_thread = Thread.new do
Capybara.server.call(middleware, port, host)
end
start_time = Capybara::Helpers.monotonic_time
until responsive?
if (Capybara::Helpers.monotonic_time - start_time) > 60
raise "Rack application timed out during boot"
end
@server_thread.join(0.1)
end
end
self
end
|
#error ⇒ Object
36
37
38
|
# File 'lib/capybara/server.rb', line 36
def error
middleware.error
end
|
#reset_error! ⇒ Object
32
33
34
|
# File 'lib/capybara/server.rb', line 32
def reset_error!
middleware.error = nil
end
|
#responsive? ⇒ Boolean
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
# File 'lib/capybara/server.rb', line 44
def responsive?
return false if @server_thread&.join(0)
begin
res = if !using_ssl?
http_connect
else
https_connect
end
rescue EOFError, Net::ReadTimeout
res = https_connect
@using_ssl = true
end
if res.is_a?(Net::HTTPSuccess) || res.is_a?(Net::HTTPRedirection)
return res.body == app.object_id.to_s
end
rescue SystemCallError
false
end
|
#using_ssl? ⇒ Boolean
40
41
42
|
# File 'lib/capybara/server.rb', line 40
def using_ssl?
@using_ssl
end
|
#wait_for_pending_requests ⇒ Object
65
66
67
68
69
70
71
72
73
|
# File 'lib/capybara/server.rb', line 65
def wait_for_pending_requests
start_time = Capybara::Helpers.monotonic_time
while pending_requests?
if (Capybara::Helpers.monotonic_time - start_time) > 60
raise "Requests did not finish in 60 seconds"
end
sleep 0.01
end
end
|