Module: NetworkResiliency
- Extended by:
- NetworkResiliency
- Included in:
- NetworkResiliency
- Defined in:
- lib/network_resiliency.rb,
lib/network_resiliency/stats.rb,
lib/network_resiliency/version.rb,
lib/network_resiliency/adapter/http.rb,
lib/network_resiliency/adapter/mysql.rb,
lib/network_resiliency/adapter/redis.rb,
lib/network_resiliency/adapter/faraday.rb
Defined Under Namespace
Modules: Adapter
Classes: Stats
Constant Summary
collapse
- IP_ADDRESS_REGEX =
Regexp.new(/\d{1,3}(\.\d{1,3}){3}/)
- VERSION =
"0.3.0"
Instance Attribute Summary collapse
Instance Method Summary
collapse
Instance Attribute Details
#statsd ⇒ Object
Returns the value of attribute statsd.
13
14
15
|
# File 'lib/network_resiliency.rb', line 13
def statsd
@statsd
end
|
Instance Method Details
15
16
17
|
# File 'lib/network_resiliency.rb', line 15
def configure
yield self
end
|
#disable! ⇒ Object
65
66
67
68
69
70
71
72
|
# File 'lib/network_resiliency.rb', line 65
def disable!
original = @enabled
@enabled = false
yield if block_given?
ensure
@enabled = original if block_given?
end
|
#enable! ⇒ Object
56
57
58
59
60
61
62
63
|
# File 'lib/network_resiliency.rb', line 56
def enable!
original = @enabled
@enabled = true
yield if block_given?
ensure
@enabled = original if block_given?
end
|
#enabled=(enabled) ⇒ Object
48
49
50
51
52
53
54
|
# File 'lib/network_resiliency.rb', line 48
def enabled=(enabled)
unless [ true, false ].include?(enabled) || enabled.is_a?(Proc)
raise ArgumentError
end
@enabled = enabled
end
|
#enabled?(adapter) ⇒ Boolean
34
35
36
37
38
39
40
41
42
43
44
45
46
|
# File 'lib/network_resiliency.rb', line 34
def enabled?(adapter)
return true if @enabled.nil?
if @enabled.is_a?(Proc)
enabled = @enabled
disable! { !!enabled.call(adapter) }
else
@enabled
end
rescue
false
end
|
#patch(*adapters) ⇒ Object
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
# File 'lib/network_resiliency.rb', line 19
def patch(*adapters)
adapters.each do |adapter|
case adapter
when :http
Adapter::HTTP.patch
when :redis
Adapter::Redis.patch
when :mysql
Adapter::Mysql.patch
else
raise NotImplementedError
end
end
end
|
#record(adapter:, action:, destination:, duration:, error: nil) ⇒ Object
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
# File 'lib/network_resiliency.rb', line 83
def record(adapter:, action:, destination:, duration:, error: nil)
return if IP_ADDRESS_REGEX.match?(destination)
NetworkResiliency.statsd&.distribution(
"network_resiliency.#{action}",
duration,
tags: {
adapter: adapter,
destination: destination,
error: error,
}.compact,
)
end
|
#reset ⇒ Object
98
99
100
|
# File 'lib/network_resiliency.rb', line 98
def reset
@enabled = nil
end
|
#timestamp ⇒ Object
74
75
76
77
|
# File 'lib/network_resiliency.rb', line 74
def timestamp
Process.clock_gettime(Process::CLOCK_MONOTONIC) * 1_000
end
|