Class: SolidQueueMonitor::MonitorController
- Inherits:
-
ActionController::Base
- Object
- ActionController::Base
- SolidQueueMonitor::MonitorController
- Includes:
- ActionController::Flash, ActionController::HttpAuthentication::Basic::ControllerMethods
- Defined in:
- app/controllers/solid_queue_monitor/monitor_controller.rb
Instance Method Summary collapse
- #discard_failed_job ⇒ Object
- #discard_failed_jobs ⇒ Object
- #execute_jobs ⇒ Object
- #failed_jobs ⇒ Object
- #index ⇒ Object
- #queues ⇒ Object
- #ready_jobs ⇒ Object
- #recurring_jobs ⇒ Object
- #retry_failed_job ⇒ Object
- #retry_failed_jobs ⇒ Object
- #scheduled_jobs ⇒ Object
-
#set_flash_message(message, type) ⇒ Object
Define a helper method for setting flash messages.
Instance Method Details
#discard_failed_job ⇒ Object
97 98 99 100 101 102 103 104 105 106 107 |
# File 'app/controllers/solid_queue_monitor/monitor_controller.rb', line 97 def discard_failed_job id = params[:id] service = SolidQueueMonitor::FailedJobService.new if service.discard_job(id) ("Job #{id} has been discarded.", 'success') else ("Failed to discard job #{id}.", 'error') end redirect_to failed_jobs_path end |
#discard_failed_jobs ⇒ Object
120 121 122 123 124 125 126 127 128 129 |
# File 'app/controllers/solid_queue_monitor/monitor_controller.rb', line 120 def discard_failed_jobs result = SolidQueueMonitor::FailedJobService.new.discard_all(params[:job_ids]) if result[:success] (result[:message], 'success') else (result[:message], 'error') end redirect_to failed_jobs_path end |
#execute_jobs ⇒ Object
75 76 77 78 79 80 81 82 83 |
# File 'app/controllers/solid_queue_monitor/monitor_controller.rb', line 75 def execute_jobs if params[:job_ids].present? SolidQueueMonitor::ExecuteJobService.new.execute_many(params[:job_ids]) ('Selected jobs moved to ready queue', 'success') else ('No jobs selected', 'error') end redirect_to scheduled_jobs_path end |
#failed_jobs ⇒ Object
58 59 60 61 62 63 64 65 66 |
# File 'app/controllers/solid_queue_monitor/monitor_controller.rb', line 58 def failed_jobs base_query = SolidQueue::FailedExecution.includes(:job).order(created_at: :desc) @failed_jobs = paginate(filter_failed_jobs(base_query)) render_page('Failed Jobs', SolidQueueMonitor::FailedJobsPresenter.new(@failed_jobs[:records], current_page: @failed_jobs[:current_page], total_pages: @failed_jobs[:total_pages], filters: filter_params ).render) end |
#index ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 |
# File 'app/controllers/solid_queue_monitor/monitor_controller.rb', line 16 def index @stats = SolidQueueMonitor::StatsCalculator.calculate # Get all jobs with pagination @recent_jobs = paginate(filter_jobs(SolidQueue::Job.order(created_at: :desc))) # Preload failed job information preload_job_statuses(@recent_jobs[:records]) render_page('Overview', generate_overview_content) end |
#queues ⇒ Object
68 69 70 71 72 73 |
# File 'app/controllers/solid_queue_monitor/monitor_controller.rb', line 68 def queues @queues = SolidQueue::Job.group(:queue_name) .select('queue_name, COUNT(*) as job_count') .order('job_count DESC') render_page('Queues', SolidQueueMonitor::QueuesPresenter.new(@queues).render) end |
#ready_jobs ⇒ Object
28 29 30 31 32 33 34 35 36 |
# File 'app/controllers/solid_queue_monitor/monitor_controller.rb', line 28 def ready_jobs base_query = SolidQueue::ReadyExecution.includes(:job).order(created_at: :desc) @ready_jobs = paginate(filter_ready_jobs(base_query)) render_page('Ready Jobs', SolidQueueMonitor::ReadyJobsPresenter.new(@ready_jobs[:records], current_page: @ready_jobs[:current_page], total_pages: @ready_jobs[:total_pages], filters: filter_params ).render) end |
#recurring_jobs ⇒ Object
48 49 50 51 52 53 54 55 56 |
# File 'app/controllers/solid_queue_monitor/monitor_controller.rb', line 48 def recurring_jobs base_query = filter_recurring_jobs(SolidQueue::RecurringTask.order(:key)) @recurring_jobs = paginate(base_query) render_page('Recurring Jobs', SolidQueueMonitor::RecurringJobsPresenter.new(@recurring_jobs[:records], current_page: @recurring_jobs[:current_page], total_pages: @recurring_jobs[:total_pages], filters: filter_params ).render) end |
#retry_failed_job ⇒ Object
85 86 87 88 89 90 91 92 93 94 95 |
# File 'app/controllers/solid_queue_monitor/monitor_controller.rb', line 85 def retry_failed_job id = params[:id] service = SolidQueueMonitor::FailedJobService.new if service.retry_job(id) ("Job #{id} has been queued for retry.", 'success') else ("Failed to retry job #{id}.", 'error') end redirect_to failed_jobs_path end |
#retry_failed_jobs ⇒ Object
109 110 111 112 113 114 115 116 117 118 |
# File 'app/controllers/solid_queue_monitor/monitor_controller.rb', line 109 def retry_failed_jobs result = SolidQueueMonitor::FailedJobService.new.retry_all(params[:job_ids]) if result[:success] (result[:message], 'success') else (result[:message], 'error') end redirect_to failed_jobs_path end |
#scheduled_jobs ⇒ Object
38 39 40 41 42 43 44 45 46 |
# File 'app/controllers/solid_queue_monitor/monitor_controller.rb', line 38 def scheduled_jobs base_query = SolidQueue::ScheduledExecution.includes(:job).order(scheduled_at: :asc) @scheduled_jobs = paginate(filter_scheduled_jobs(base_query)) render_page('Scheduled Jobs', SolidQueueMonitor::ScheduledJobsPresenter.new(@scheduled_jobs[:records], current_page: @scheduled_jobs[:current_page], total_pages: @scheduled_jobs[:total_pages], filters: filter_params ).render) end |
#set_flash_message(message, type) ⇒ Object
Define a helper method for setting flash messages
11 12 13 14 |
# File 'app/controllers/solid_queue_monitor/monitor_controller.rb', line 11 def (, type) session[:flash_message] = session[:flash_type] = type end |