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.2.0"
Class Attribute Summary collapse
-
.enabled ⇒ Object
Returns the value of attribute enabled.
-
.jobs_enabled ⇒ Object
Returns the value of attribute jobs_enabled.
-
.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
- .notes ⇒ Object
- .requests_enabled? ⇒ Boolean
- .track(note_type, note = nil) ⇒ Object
- .track_error(e) ⇒ Object
- .track_job(job, job_id, queue, created_at) ⇒ Object
Class Attribute Details
.enabled ⇒ Object
Returns the value of attribute enabled.
20 21 22 |
# File 'lib/notable.rb', line 20 def enabled @enabled end |
.jobs_enabled ⇒ Object
Returns the value of attribute jobs_enabled.
22 23 24 |
# File 'lib/notable.rb', line 22 def jobs_enabled @jobs_enabled end |
.requests_enabled ⇒ Object
Returns the value of attribute requests_enabled.
21 22 23 |
# File 'lib/notable.rb', line 21 def requests_enabled @requests_enabled end |
.slow_job_threshold ⇒ Object
Returns the value of attribute slow_job_threshold.
31 32 33 |
# File 'lib/notable.rb', line 31 def slow_job_threshold @slow_job_threshold end |
.slow_request_threshold ⇒ Object
Returns the value of attribute slow_request_threshold.
27 28 29 |
# File 'lib/notable.rb', line 27 def slow_request_threshold @slow_request_threshold end |
.track_job_method ⇒ Object
jobs
30 31 32 |
# File 'lib/notable.rb', line 30 def track_job_method @track_job_method end |
.track_request_method ⇒ Object
requests
25 26 27 |
# File 'lib/notable.rb', line 25 def track_request_method @track_request_method end |
.user_method ⇒ Object
Returns the value of attribute user_method.
26 27 28 |
# File 'lib/notable.rb', line 26 def user_method @user_method end |
Class Method Details
.clear_notes ⇒ Object
66 67 68 |
# File 'lib/notable.rb', line 66 def self.clear_notes RequestStore.store.delete(:notable_notes) end |
.jobs_enabled? ⇒ Boolean
41 42 43 |
# File 'lib/notable.rb', line 41 def self.jobs_enabled? enabled && jobs_enabled end |
.notes ⇒ Object
62 63 64 |
# File 'lib/notable.rb', line 62 def self.notes RequestStore.store[:notable_notes].to_a end |
.requests_enabled? ⇒ Boolean
37 38 39 |
# File 'lib/notable.rb', line 37 def self.requests_enabled? enabled && requests_enabled end |
.track(note_type, note = nil) ⇒ Object
54 55 56 |
# File 'lib/notable.rb', line 54 def self.track(note_type, note = nil) (RequestStore.store[:notable_notes] ||= []) << {note_type: note_type, note: note} end |
.track_error(e) ⇒ Object
58 59 60 |
# File 'lib/notable.rb', line 58 def self.track_error(e) track "Error", "#{e.class.name}: #{e.}" end |
.track_job(job, job_id, queue, created_at) ⇒ Object
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 |
# File 'lib/notable.rb', line 70 def self.track_job(job, job_id, queue, created_at) exception = nil notes = nil start_time = Time.now queued_time = created_at ? start_time - created_at : nil begin yield rescue Exception => e exception = e track_error(e) ensure notes = Notable.notes Notable.clear_notes end runtime = Time.now - start_time Safely.safely do notes << {note_type: "Slow Job"} if runtime > Notable.slow_job_threshold 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 |