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