Module: RaceGuard::Interceptors
- Defined in:
- lib/race_guard/interceptors.rb,
lib/race_guard/interceptors/emitter.rb,
lib/race_guard/interceptors/faraday.rb,
lib/race_guard/interceptors/net_http.rb,
lib/race_guard/interceptors/active_job.rb,
lib/race_guard/interceptors/action_mailer.rb
Overview
Optional Epic 3 hooks: emit RaceGuard.report events when common async / side-effect APIs run (see Task 3.2). Install is explicit and idempotent.
Defined Under Namespace
Modules: ActionMailerDeliverLater, ActiveJobPerformLater, Emitter, FaradayRunRequest, NetHttpRequest
Constant Summary
collapse
- INSTALL_MUTEX =
Mutex.new
Class Method Summary
collapse
Class Method Details
.install_action_mailer! ⇒ Object
41
42
43
44
45
46
47
48
49
50
51
52
53
|
# File 'lib/race_guard/interceptors.rb', line 41
def install_action_mailer!
INSTALL_MUTEX.synchronize do
return self if @installed.include?(:action_mailer)
if defined?(::ActionMailer::MessageDelivery)
mod = ActionMailerDeliverLater
delivery = ::ActionMailer::MessageDelivery
delivery.prepend(mod) unless delivery.ancestors.include?(mod)
@installed.add(:action_mailer)
end
end
self
end
|
.install_active_job! ⇒ Object
28
29
30
31
32
33
34
35
36
37
38
39
|
# File 'lib/race_guard/interceptors.rb', line 28
def install_active_job!
INSTALL_MUTEX.synchronize do
return self if @installed.include?(:active_job)
if defined?(::ActiveJob::Base)
sc = ::ActiveJob::Base.singleton_class
sc.prepend(ActiveJobPerformLater) unless sc.ancestors.include?(ActiveJobPerformLater)
@installed.add(:active_job)
end
end
self
end
|
.install_all! ⇒ Object
20
21
22
23
24
25
26
|
# File 'lib/race_guard/interceptors.rb', line 20
def install_all!
install_active_job!
install_action_mailer!
install_net_http!
install_faraday!
self
end
|
.install_faraday! ⇒ Object
69
70
71
72
73
74
75
76
77
78
79
80
|
# File 'lib/race_guard/interceptors.rb', line 69
def install_faraday!
INSTALL_MUTEX.synchronize do
return self if @installed.include?(:faraday)
if defined?(::Faraday::Connection)
mod = FaradayRunRequest
::Faraday::Connection.prepend(mod) unless ::Faraday::Connection.ancestors.include?(mod)
@installed.add(:faraday)
end
end
self
end
|
.install_net_http! ⇒ Object
55
56
57
58
59
60
61
62
63
64
65
66
67
|
# File 'lib/race_guard/interceptors.rb', line 55
def install_net_http!
require 'net/http' unless defined?(::Net::HTTP)
INSTALL_MUTEX.synchronize do
return self if @installed.include?(:net_http)
if defined?(::Net::HTTP)
mod = NetHttpRequest
::Net::HTTP.prepend(mod) unless ::Net::HTTP.ancestors.include?(mod)
@installed.add(:net_http)
end
end
self
end
|
.reset_install_registry_for_tests! ⇒ Object
82
83
84
85
|
# File 'lib/race_guard/interceptors.rb', line 82
def reset_install_registry_for_tests!
INSTALL_MUTEX.synchronize { @installed.clear }
nil
end
|