From 1519b49f8bea4f602eec0974df053d14af5a9064 Mon Sep 17 00:00:00 2001 From: kaiba Date: Mon, 6 Apr 2026 18:32:09 +0900 Subject: [PATCH 1/2] Show 404 errors if a task has been deleted. --- .../maintenance_tasks/application_controller.rb | 4 ++++ app/views/maintenance_tasks/not_found.html.erb | 9 +++++++++ lib/maintenance_tasks/engine.rb | 4 ---- test/system/maintenance_tasks/tasks_test.rb | 9 +++++++++ 4 files changed, 22 insertions(+), 4 deletions(-) create mode 100644 app/views/maintenance_tasks/not_found.html.erb diff --git a/app/controllers/maintenance_tasks/application_controller.rb b/app/controllers/maintenance_tasks/application_controller.rb index 0140cd49..0f672ad7 100644 --- a/app/controllers/maintenance_tasks/application_controller.rb +++ b/app/controllers/maintenance_tasks/application_controller.rb @@ -31,5 +31,9 @@ class ApplicationController < MaintenanceTasks.parent_controller.constantize end protect_from_forgery with: :exception + + rescue_from Task::NotFoundError do |error| + render("maintenance_tasks/not_found", status: :not_found) + end end end diff --git a/app/views/maintenance_tasks/not_found.html.erb b/app/views/maintenance_tasks/not_found.html.erb new file mode 100644 index 00000000..2d8758b6 --- /dev/null +++ b/app/views/maintenance_tasks/not_found.html.erb @@ -0,0 +1,9 @@ +<% content_for :page_title, "Not Found" %> + +
+

Task Not Found

+

The task you are looking for does not exist or has been deleted.

+

+ <%= link_to "Back to Tasks", tasks_path, class: "button is-primary is-rounded" %> +

+
diff --git a/lib/maintenance_tasks/engine.rb b/lib/maintenance_tasks/engine.rb index 185a22f3..847a86a4 100644 --- a/lib/maintenance_tasks/engine.rb +++ b/lib/maintenance_tasks/engine.rb @@ -32,9 +32,5 @@ class Engine < ::Rails::Engine config.after_initialize do JobIteration.max_job_runtime ||= 5.minutes end - - config.action_dispatch.rescue_responses.merge!( - "MaintenanceTasks::Task::NotFoundError" => :not_found, - ) end end diff --git a/test/system/maintenance_tasks/tasks_test.rb b/test/system/maintenance_tasks/tasks_test.rb index 5e973d87..584f90d0 100644 --- a/test/system/maintenance_tasks/tasks_test.rb +++ b/test/system/maintenance_tasks/tasks_test.rb @@ -259,6 +259,15 @@ class TasksTest < ApplicationSystemTestCase assert_button "Run", disabled: true end + test "show a not found Task" do + visit maintenance_tasks_path + "/tasks/Maintenance::DoesNotExist" + + assert_title "Not Found" + assert_text "Task Not Found" + assert_text "The task you are looking for does not exist or has been deleted." + assert_link "Back to Tasks" + end + test "visit main page through iframe" do visit root_path From 4fac3f94c51f1c1a594c34bb6cd24ed7ae288d63 Mon Sep 17 00:00:00 2001 From: kaiba Date: Fri, 26 Jun 2026 18:32:21 +0900 Subject: [PATCH 2/2] Update test/system/maintenance_tasks/tasks_test.rb MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Étienne Barrié --- test/system/maintenance_tasks/tasks_test.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/test/system/maintenance_tasks/tasks_test.rb b/test/system/maintenance_tasks/tasks_test.rb index 584f90d0..f40094d5 100644 --- a/test/system/maintenance_tasks/tasks_test.rb +++ b/test/system/maintenance_tasks/tasks_test.rb @@ -263,6 +263,7 @@ class TasksTest < ApplicationSystemTestCase visit maintenance_tasks_path + "/tasks/Maintenance::DoesNotExist" assert_title "Not Found" + assert_includes page.driver.browser.logs.get(:browser).sole.message, "404" assert_text "Task Not Found" assert_text "The task you are looking for does not exist or has been deleted." assert_link "Back to Tasks"