Module: SolidQueueMonitor::JobDetailsHelper
- Defined in:
- app/helpers/solid_queue_monitor/job_details_helper.rb
Instance Method Summary collapse
- #detail_duration(seconds) ⇒ Object
- #detail_job_status(job:, failed_execution:, claimed_execution:, scheduled_execution:) ⇒ Object
- #detail_status_class(status = detail_job_status) ⇒ Object
- #detail_status_label(status = detail_job_status) ⇒ Object
- #detail_timing(job:, claimed_execution:, failed_execution:) ⇒ Object
- #pretty_arguments(args) ⇒ Object
- #recent_job_duration(job) ⇒ Object
Instance Method Details
#detail_duration(seconds) ⇒ Object
28 29 30 31 32 33 34 35 |
# File 'app/helpers/solid_queue_monitor/job_details_helper.rb', line 28 def detail_duration(seconds) return '-' unless seconds return "#{(seconds * 1000).round}ms" if seconds < 1 return "#{seconds.round(1)}s" if seconds < 60 return "#{(seconds / 60).floor}m #{(seconds % 60).round}s" if seconds < 3600 "#{(seconds / 3600).floor}h #{((seconds % 3600) / 60).floor}m" end |
#detail_job_status(job:, failed_execution:, claimed_execution:, scheduled_execution:) ⇒ Object
5 6 7 8 9 10 11 12 |
# File 'app/helpers/solid_queue_monitor/job_details_helper.rb', line 5 def detail_job_status(job:, failed_execution:, claimed_execution:, scheduled_execution:) return :failed if failed_execution return :in_progress if claimed_execution return :scheduled if scheduled_execution || job.scheduled_at&.future? return :completed if job.finished_at :pending end |
#detail_status_class(status = detail_job_status) ⇒ Object
24 25 26 |
# File 'app/helpers/solid_queue_monitor/job_details_helper.rb', line 24 def detail_status_class(status = detail_job_status) "status-#{status.to_s.tr('_', '-')}" end |
#detail_status_label(status = detail_job_status) ⇒ Object
14 15 16 17 18 19 20 21 22 |
# File 'app/helpers/solid_queue_monitor/job_details_helper.rb', line 14 def detail_status_label(status = detail_job_status) { failed: 'Failed', in_progress: 'In Progress', scheduled: 'Scheduled', completed: 'Completed', pending: 'Pending' }[status] end |
#detail_timing(job:, claimed_execution:, failed_execution:) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'app/helpers/solid_queue_monitor/job_details_helper.rb', line 37 def detail_timing(job:, claimed_execution:, failed_execution:) created_at = job.created_at started_at = claimed_execution&.created_at finished_at = job.finished_at failed_at = failed_execution&.created_at end_time = finished_at || failed_at { queue_wait: started_at && created_at ? started_at - created_at : nil, execution: started_at && end_time ? end_time - started_at : nil, total: created_at && end_time ? end_time - created_at : nil } end |
#pretty_arguments(args) ⇒ Object
51 52 53 54 55 56 57 |
# File 'app/helpers/solid_queue_monitor/job_details_helper.rb', line 51 def pretty_arguments(args) return '-' if args.blank? JSON.pretty_generate(args) rescue JSON::GeneratorError args.inspect end |
#recent_job_duration(job) ⇒ Object
59 60 61 62 63 64 |
# File 'app/helpers/solid_queue_monitor/job_details_helper.rb', line 59 def recent_job_duration(job) end_time = job.finished_at || job.failed_execution&.created_at return '-' unless end_time detail_duration(end_time - job.created_at) end |