FEATURE: Allow plugins to add admin dashboard warnings

This commit is contained in:
Kane York 2015-08-25 17:07:40 -07:00
parent 01406c65a6
commit 3cbfc45bf6
2 changed files with 56 additions and 21 deletions

View File

@ -32,28 +32,37 @@ class AdminDashboardData
MOBILE_REPORTS ||= ['mobile_visits'] + ApplicationRequest.req_types.keys.select {|r| r =~ /mobile/}.map { |r| r + "_reqs" } MOBILE_REPORTS ||= ['mobile_visits'] + ApplicationRequest.req_types.keys.select {|r| r =~ /mobile/}.map { |r| r + "_reqs" }
def self.add_problem_check(*syms, &blk)
@problem_syms ||= []
@problem_blocks ||= []
@problem_syms.push(*syms) if syms
@problem_blocks << blk if blk
end
class << self; attr_reader :problem_syms, :problem_blocks; end
def problems def problems
[ rails_env_check, problems = []
ruby_version_check, AdminDashboardData.problem_syms.each do |sym|
host_names_check, problems << send(sym)
gc_checks, end
sidekiq_check || queue_size_check, AdminDashboardData.problem_blocks.each do |blk|
ram_check, problems << instance_exec(&blk)
google_oauth2_config_check, end
facebook_config_check, problems.compact
twitter_config_check, end
github_config_check,
s3_config_check, add_problem_check :rails_env_check, :ruby_version_check, :host_names_check,
image_magick_check, :gc_checks, :ram_check, :google_oauth2_config_check,
failing_emails_check, :facebook_config_check, :twitter_config_check,
default_logo_check, :github_config_check, :s3_config_check, :image_magick_check,
contact_email_check, :failing_emails_check, :default_logo_check, :contact_email_check,
send_consumer_email_check, :send_consumer_email_check, :title_check,
title_check, :site_description_check, :site_contact_username_check,
site_description_check, :notification_email_check
site_contact_username_check,
notification_email_check add_problem_check do
].compact sidekiq_check || queue_size_check
end end

View File

@ -2,6 +2,32 @@ require 'spec_helper'
describe AdminDashboardData do describe AdminDashboardData do
describe "adding new checks" do
it 'calls the passed block' do
called = false
AdminDashboardData.add_problem_check do
called = true
end
AdminDashboardData.fetch_problems
expect(called).to eq(true)
end
it 'calls the passed method' do
$test_AdminDashboardData_global = false
class AdminDashboardData
def my_test_method
$test_AdminDashboardData_global = true
end
end
AdminDashboardData.add_problem_check :my_test_method
AdminDashboardData.fetch_problems
expect($test_AdminDashboardData_global).to eq(true)
$test_AdminDashboardData_global = nil
end
end
describe "rails_env_check" do describe "rails_env_check" do
subject { described_class.new.rails_env_check } subject { described_class.new.rails_env_check }