diff --git a/app/controllers/maintenance_tasks/runs_controller.rb b/app/controllers/maintenance_tasks/runs_controller.rb index a713781c..25cca46f 100644 --- a/app/controllers/maintenance_tasks/runs_controller.rb +++ b/app/controllers/maintenance_tasks/runs_controller.rb @@ -6,7 +6,25 @@ module MaintenanceTasks # # @api private class RunsController < ApplicationController - before_action :set_run + before_action :set_run, except: :create + + # Creates a Run for a given Task and redirects to the Task page. + def create(&block) + task = Runner.run( + name: params.fetch(:task_id), + csv_file: params[:csv_file], + arguments: params.fetch(:task_arguments, {}).permit!.to_h, + &block + ) + redirect_to(task_path(task)) + rescue ActiveRecord::RecordInvalid => error + redirect_to(task_path(error.record.task_name), alert: error.message) + rescue ActiveRecord::ValueTooLong => error + task_name = params.fetch(:id) + redirect_to(task_path(task_name), alert: error.message) + rescue Runner::EnqueuingError => error + redirect_to(task_path(error.run.task_name), alert: error.message) + end # Updates a Run status to paused. def pause diff --git a/app/controllers/maintenance_tasks/tasks_controller.rb b/app/controllers/maintenance_tasks/tasks_controller.rb index beedb6fe..3eea57b0 100644 --- a/app/controllers/maintenance_tasks/tasks_controller.rb +++ b/app/controllers/maintenance_tasks/tasks_controller.rb @@ -24,24 +24,6 @@ def show @runs_page = RunsPage.new(@task.completed_runs, params[:cursor]) end - # Runs a given Task and redirects to the Task page. - def run(&block) - task = Runner.run( - name: params.fetch(:id), - csv_file: params[:csv_file], - arguments: params.fetch(:task_arguments, {}).permit!.to_h, - &block - ) - redirect_to(task_path(task)) - rescue ActiveRecord::RecordInvalid => error - redirect_to(task_path(error.record.task_name), alert: error.message) - rescue ActiveRecord::ValueTooLong => error - task_name = params.fetch(:id) - redirect_to(task_path(task_name), alert: error.message) - rescue Runner::EnqueuingError => error - redirect_to(task_path(error.run.task_name), alert: error.message) - end - private def set_refresh diff --git a/app/views/maintenance_tasks/tasks/show.html.erb b/app/views/maintenance_tasks/tasks/show.html.erb index e283d9c0..b0c15194 100644 --- a/app/views/maintenance_tasks/tasks/show.html.erb +++ b/app/views/maintenance_tasks/tasks/show.html.erb @@ -5,7 +5,7 @@