Module: RailsOpsDashboard::BackgroundTaskRunner
- Extended by:
- ActiveSupport::Concern
- Included in:
- RakeTasksController, SeedsController
- Defined in:
- app/controllers/concerns/rails_ops_dashboard/background_task_runner.rb
Constant Summary collapse
- TASKS =
Concurrent::Map.new
Instance Method Summary collapse
Instance Method Details
#run_in_background(task_id, task_name) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'app/controllers/concerns/rails_ops_dashboard/background_task_runner.rb', line 9 def run_in_background(task_id, task_name) TASKS[task_id] = { name: task_name, status: 'running', started_at: Time.current.iso8601 } Thread.new do yield TASKS[task_id][:status] = 'completed' rescue StandardError => e TASKS[task_id][:status] = 'failed' TASKS[task_id][:error] = e. Rails.logger.error("[RailsOpsDashboard] Task #{task_name} failed: #{e.}") ensure TASKS[task_id][:finished_at] = Time.current.iso8601 end end |
#task_status(task_id) ⇒ Object
24 25 26 |
# File 'app/controllers/concerns/rails_ops_dashboard/background_task_runner.rb', line 24 def task_status(task_id) TASKS[task_id] end |