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