Module: Notable
- Defined in:
- lib/notable.rb,
lib/notable/engine.rb,
lib/notable/version.rb,
app/models/notable/job.rb,
lib/notable/middleware.rb,
app/models/notable/request.rb,
lib/notable/job_extensions.rb,
lib/notable/validation_errors.rb,
lib/notable/unverified_request.rb,
lib/generators/notable/jobs_generator.rb,
lib/generators/notable/requests_generator.rb
Defined Under Namespace
Modules: Generators, JobExtensions, UnverifiedRequest, ValidationErrors Classes: Engine, Job, Middleware, Request
Constant Summary collapse
- VERSION =
"0.7.0"
Class Attribute Summary collapse
-
.enabled ⇒ Object
Returns the value of attribute enabled.
-
.jobs_enabled ⇒ Object
Returns the value of attribute jobs_enabled.
-
.mask_ips ⇒ Object
Returns the value of attribute mask_ips.
-
.requests_enabled ⇒ Object
Returns the value of attribute requests_enabled.
-
.scrub_invalid_utf8 ⇒ Object
Returns the value of attribute scrub_invalid_utf8.
-
.slow_job_threshold ⇒ Object
Returns the value of attribute slow_job_threshold.
-
.slow_request_threshold ⇒ Object
Returns the value of attribute slow_request_threshold.
-
.track_job_method ⇒ Object
jobs.
-
.track_request_method ⇒ Object
requests.
-
.user_method ⇒ Object
Returns the value of attribute user_method.
Class Method Summary collapse
- .clear_notes ⇒ Object
- .jobs_enabled? ⇒ Boolean
- .mask_ip(ip) ⇒ Object
- .monotonic_time ⇒ Object
- .notes ⇒ Object
- .requests_enabled? ⇒ Boolean
- .track(note_type, note = nil) ⇒ Object
- .track_error(e) ⇒ Object
- .track_job(job, job_id, queue, created_at, slow_job_threshold = nil) ⇒ Object
Class Attribute Details
.enabled ⇒ Object
Returns the value of attribute enabled.
15 16 17 |
# File 'lib/notable.rb', line 15 def enabled @enabled end |
.jobs_enabled ⇒ Object
Returns the value of attribute jobs_enabled.
17 18 19 |
# File 'lib/notable.rb', line 17 def jobs_enabled @jobs_enabled end |
.mask_ips ⇒ Object
Returns the value of attribute mask_ips.
23 24 25 |
# File 'lib/notable.rb', line 23 def mask_ips @mask_ips end |
.requests_enabled ⇒ Object
Returns the value of attribute requests_enabled.
16 17 18 |
# File 'lib/notable.rb', line 16 def requests_enabled @requests_enabled end |
.scrub_invalid_utf8 ⇒ Object
Returns the value of attribute scrub_invalid_utf8.
24 25 26 |
# File 'lib/notable.rb', line 24 def scrub_invalid_utf8 @scrub_invalid_utf8 end |
.slow_job_threshold ⇒ Object
Returns the value of attribute slow_job_threshold.
28 29 30 |
# File 'lib/notable.rb', line 28 def slow_job_threshold @slow_job_threshold end |
.slow_request_threshold ⇒ Object
Returns the value of attribute slow_request_threshold.
22 23 24 |
# File 'lib/notable.rb', line 22 def slow_request_threshold @slow_request_threshold end |
.track_job_method ⇒ Object
jobs
27 28 29 |
# File 'lib/notable.rb', line 27 def track_job_method @track_job_method end |
.track_request_method ⇒ Object
requests
20 21 22 |
# File 'lib/notable.rb', line 20 def track_request_method @track_request_method end |
.user_method ⇒ Object
Returns the value of attribute user_method.
21 22 23 |
# File 'lib/notable.rb', line 21 def user_method @user_method end |
Class Method Details
.clear_notes ⇒ Object
65 66 67 |
# File 'lib/notable.rb', line 65 def self.clear_notes Thread.current[:notable_notes] = nil end |
.jobs_enabled? ⇒ Boolean
40 41 42 |
# File 'lib/notable.rb', line 40 def self.jobs_enabled? enabled && jobs_enabled end |
.mask_ip(ip) ⇒ Object
112 113 114 115 116 117 118 119 120 121 |
# File 'lib/notable.rb', line 112 def self.mask_ip(ip) addr = IPAddr.new(ip) if addr.ipv4? # set last octet to 0 addr.mask(24).to_s else # set last 80 bits to zeros addr.mask(48).to_s end end |
.monotonic_time ⇒ Object
123 124 125 |
# File 'lib/notable.rb', line 123 def self.monotonic_time Process.clock_gettime(Process::CLOCK_MONOTONIC) end |
.notes ⇒ Object
61 62 63 |
# File 'lib/notable.rb', line 61 def self.notes Thread.current[:notable_notes] ||= [] end |
.requests_enabled? ⇒ Boolean
36 37 38 |
# File 'lib/notable.rb', line 36 def self.requests_enabled? enabled && requests_enabled end |
.track(note_type, note = nil) ⇒ Object
53 54 55 |
# File 'lib/notable.rb', line 53 def self.track(note_type, note = nil) notes << {note_type: note_type, note: note} end |
.track_error(e) ⇒ Object
57 58 59 |
# File 'lib/notable.rb', line 57 def self.track_error(e) track "Error", "#{e.class.name}: #{e.}" end |
.track_job(job, job_id, queue, created_at, slow_job_threshold = nil) ⇒ Object
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
# File 'lib/notable.rb', line 69 def self.track_job(job, job_id, queue, created_at, slow_job_threshold = nil) slow_job_threshold ||= Notable.slow_job_threshold exception = nil notes = nil started_at = Time.now # wall time start_time = monotonic_time begin yield rescue Exception => e exception = e track_error(e) ensure notes = Notable.notes Notable.clear_notes end runtime = monotonic_time - start_time Safely.safely do notes << {note_type: "Slow Job"} if runtime > slow_job_threshold if notes.any? created_at = Time.parse(created_at) if created_at.is_a?(String) queued_time = created_at ? [started_at - created_at, 0].max : nil end notes.each do |note| data = { note_type: note[:note_type], note: note[:note], job: job, job_id: job_id, queue: queue, runtime: runtime, queued_time: queued_time } Notable.track_job_method.call(data) end end raise exception if exception end |