diff --git a/app/controllers/admin/dashboard_controller.rb b/app/controllers/admin/dashboard_controller.rb index e1fcb69b..9d99570c 100644 --- a/app/controllers/admin/dashboard_controller.rb +++ b/app/controllers/admin/dashboard_controller.rb @@ -1,7 +1,14 @@ # frozen_string_literal: true +require "sidekiq/api" + class Admin::DashboardController < ApplicationController before_action :authenticate_user! - def index; end + def index + @sidekiq = { + processes: Sidekiq::ProcessSet.new, + stats: Sidekiq::Stats.new + } + end end diff --git a/app/views/admin/dashboard/_sidekiq.html.haml b/app/views/admin/dashboard/_sidekiq.html.haml new file mode 100644 index 00000000..6ce7fa7f --- /dev/null +++ b/app/views/admin/dashboard/_sidekiq.html.haml @@ -0,0 +1,22 @@ +.card + .card-header + %a.d-flex{ href: sidekiq_web_path } + %strong= t(".title") + %i.fa.fa-chevron-right.ml-auto.align-self-center + - unless @sidekiq[:processes].count.positive? + .card-body.bg-danger.text-light + = t(".error_html", env: Rails.env) + + .list-group + .list-group-item.d-flex + %span= t(".processes") + %span.ml-auto= @sidekiq[:processes].count + .list-group-item.d-flex + %span= t(".enqueued") + %span.ml-auto= @sidekiq[:stats].enqueued + .list-group-item.d-flex + %span= t(".retries") + %span.ml-auto= @sidekiq[:stats].retry_size + .list-group-item.d-flex + %span= t(".dead") + %span.ml-auto= @sidekiq[:stats].dead_size diff --git a/app/views/admin/dashboard/index.html.haml b/app/views/admin/dashboard/index.html.haml index b2518836..a6422046 100644 --- a/app/views/admin/dashboard/index.html.haml +++ b/app/views/admin/dashboard/index.html.haml @@ -1,5 +1,5 @@ -.card - .card-body - No dashboard content yet! +.row + .col-sm-6 + = render "admin/dashboard/sidekiq" - parent_layout "admin" diff --git a/app/views/tabs/_admin.html.haml b/app/views/tabs/_admin.html.haml index 677a9cf0..3ce22fcb 100644 --- a/app/views/tabs/_admin.html.haml +++ b/app/views/tabs/_admin.html.haml @@ -6,5 +6,4 @@ .card .list-group = list_group_item t(".rails"), rails_admin_path - = list_group_item t(".sidekiq"), sidekiq_web_path = list_group_item t(".pghero"), pghero_path diff --git a/config/locales/views.en.yml b/config/locales/views.en.yml index f419a71a..02f0f2ad 100644 --- a/config/locales/views.en.yml +++ b/config/locales/views.en.yml @@ -88,6 +88,19 @@ en: title: "Create Announcement" edit: title: "Edit Announcement" + dashboard: + sidekiq: + title: "Sidekiq" + error_html: | + There are no Sidekiq processes running. + Background jobs will not be processed. +
+ To fix this, run + RAILS_ENV=%{env} bundle exec sidekiq + processes: "Processes" + enqueued: "Enqueued" + retries: "Retries" + dead: "Dead" answerbox: header: anon_hint: :inbox.entry.anon_hint