Class: SolidQueueWeb::JobsController
- Inherits:
-
ApplicationController
- Object
- ActionController::Base
- ApplicationController
- SolidQueueWeb::JobsController
- Defined in:
- app/controllers/solid_queue_web/jobs_controller.rb
Constant Summary collapse
- STATUSES =
%w[ready scheduled claimed blocked failed].freeze
- DISCARDABLE =
%w[ready scheduled blocked].freeze
- EXECUTION_MODELS =
{ "ready" => SolidQueue::ReadyExecution, "scheduled" => SolidQueue::ScheduledExecution, "claimed" => SolidQueue::ClaimedExecution, "blocked" => SolidQueue::BlockedExecution, "failed" => SolidQueue::FailedExecution }.freeze
Instance Method Summary collapse
Instance Method Details
#destroy ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'app/controllers/solid_queue_web/jobs_controller.rb', line 33 def destroy model = execution_model_for!(@status) @execution = model.find(params[:id]) @execution.discard @remaining_count = filtered_scope(model).count respond_to do |format| format.turbo_stream format.html { redirect_to jobs_path(status: @status, queue: @queue), notice: "Job discarded." } end rescue ArgumentError => e redirect_to jobs_path(status: @status, queue: @queue), alert: e. rescue => e redirect_to jobs_path(status: @status, queue: @queue), alert: "Could not discard job: #{e.}" end |
#discard_all ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 |
# File 'app/controllers/solid_queue_web/jobs_controller.rb', line 48 def discard_all model = execution_model_for!(@status) jobs = filtered_scope(model).map(&:job) model.discard_all_from_jobs(jobs) redirect_to jobs_path(status: @status, queue: @queue), notice: "#{jobs.size} #{"job".pluralize(jobs.size)} discarded." rescue ArgumentError => e redirect_to jobs_path(status: @status, queue: @queue), alert: e. rescue => e redirect_to jobs_path(status: @status, queue: @queue), alert: "Could not discard jobs: #{e.}" end |
#index ⇒ Object
15 16 17 18 19 20 21 22 23 |
# File 'app/controllers/solid_queue_web/jobs_controller.rb', line 15 def index @status = params[:status].presence_in(STATUSES) || "ready" @queue = params[:queue].presence @search = params[:q].presence @jobs = EXECUTION_MODELS[@status].includes(:job) @jobs = @jobs.where(jobs: { queue_name: @queue }) if @queue.present? @jobs = @jobs.references(:job).where("solid_queue_jobs.class_name LIKE ?", "%#{@search}%") if @search.present? @pagy, @jobs = pagy(@jobs.order(created_at: :desc)) end |
#show ⇒ Object
25 26 27 28 29 30 31 |
# File 'app/controllers/solid_queue_web/jobs_controller.rb', line 25 def show @job = SolidQueue::Job .includes(:ready_execution, :scheduled_execution, :claimed_execution, :blocked_execution, :failed_execution) .find(params[:id]) @failed_execution = @job.failed_execution @execution_status = derive_status(@job) end |