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/debug_exceptions.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: DebugExceptions, Generators, JobExtensions, UnverifiedRequest, ValidationErrors Classes: Engine, Job, Middleware, Request
Constant Summary collapse
- VERSION =
"0.4.1"
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.
-
.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.
16 17 18 |
# File 'lib/notable.rb', line 16 def enabled @enabled end |
.jobs_enabled ⇒ Object
Returns the value of attribute jobs_enabled.
18 19 20 |
# File 'lib/notable.rb', line 18 def jobs_enabled @jobs_enabled end |
.mask_ips ⇒ Object
Returns the value of attribute mask_ips.
24 25 26 |
# File 'lib/notable.rb', line 24 def mask_ips @mask_ips end |
.requests_enabled ⇒ Object
Returns the value of attribute requests_enabled.
17 18 19 |
# File 'lib/notable.rb', line 17 def requests_enabled @requests_enabled 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.
23 24 25 |
# File 'lib/notable.rb', line 23 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
21 22 23 |
# File 'lib/notable.rb', line 21 def track_request_method @track_request_method end |
.user_method ⇒ Object
Returns the value of attribute user_method.
22 23 24 |
# File 'lib/notable.rb', line 22 def user_method @user_method end |
Class Method Details
.clear_notes ⇒ Object
64 65 66 |
# File 'lib/notable.rb', line 64 def self.clear_notes Thread.current[:notable_notes] = nil end |
.jobs_enabled? ⇒ Boolean
39 40 41 |
# File 'lib/notable.rb', line 39 def self.jobs_enabled? enabled && jobs_enabled end |
.mask_ip(ip) ⇒ Object
111 112 113 114 115 116 117 118 119 120 |
# File 'lib/notable.rb', line 111 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
122 123 124 |
# File 'lib/notable.rb', line 122 def self.monotonic_time Process.clock_gettime(Process::CLOCK_MONOTONIC) end |
.notes ⇒ Object
60 61 62 |
# File 'lib/notable.rb', line 60 def self.notes Thread.current[:notable_notes] ||= [] end |
.requests_enabled? ⇒ Boolean
35 36 37 |
# File 'lib/notable.rb', line 35 def self.requests_enabled? enabled && requests_enabled end |
.track(note_type, note = nil) ⇒ Object
52 53 54 |
# File 'lib/notable.rb', line 52 def self.track(note_type, note = nil) notes << {note_type: note_type, note: note} end |
.track_error(e) ⇒ Object
56 57 58 |
# File 'lib/notable.rb', line 56 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
68 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 |
# File 'lib/notable.rb', line 68 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 |