[Rails] Site internet de la World Tartiflette Tour.
1
#!/usr/bin/env ruby
2
3
# A sample pre-connect check
4
#
5
# Warms DNS before connecting to hosts in parallel
6
#
7
# These environment variables are available:
8
# KAMAL_RECORDED_AT
9
# KAMAL_PERFORMER
10
# KAMAL_VERSION
11
# KAMAL_HOSTS
12
# KAMAL_ROLE (if set)
13
# KAMAL_DESTINATION (if set)
14
# KAMAL_RUNTIME
15
16
hosts = ENV["KAMAL_HOSTS"].split(",")
17
results = nil
18
max = 3
19
20
elapsed = Benchmark.realtime do
21
results = hosts.map do |host|
22
Thread.new do
23
tries = 1
24
25
begin
26
Socket.getaddrinfo(host, 0, Socket::AF_UNSPEC, Socket::SOCK_STREAM, nil, Socket::AI_CANONNAME)
27
rescue SocketError
28
if tries < max
29
puts "Retrying DNS warmup: #{host}"
30
tries += 1
31
sleep rand
32
retry
33
else
34
puts "DNS warmup failed: #{host}"
35
host
36
end
37
end
38
39
tries
40
end
41
end.map(&:value)
42
end
43
44
retries = results.sum - hosts.size
45
nopes = results.count { |r| r == max }
46
47
puts "Prewarmed %d DNS lookups in %.2f sec: %d retries, %d failures" % [ hosts.size, elapsed, retries, nopes ]
48