forked from discourse/discourse
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
DEV: Move non scheduled problem checks to classes (discourse#26122)
In AdminDashboardData we have a bunch of problem checks implemented as methods on that class. This PR absolves it of the responsibility by promoting each of those checks to a first class ProblemCheck. This way each of them can have their own priority and arbitrary functionality can be isolated in its own class. Think "extract class" refactoring over and over. Since they were all moved we can also get rid of the @@problem_syms class variable which was basically the old version of the registry now replaced by ProblemCheck.realtime. In addition AdminDashboardData::Problem value object has been entirely replaced with the new ProblemCheck::Problem (with compatible API). Lastly, I added some RSpec matchers to simplify testing of problem checks and provide helpful error messages when assertions fail.
- Loading branch information
Showing
51 changed files
with
1,447 additions
and
477 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
25 changes: 25 additions & 0 deletions
25
app/services/problem_check/email_polling_errored_recently.rb
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
# frozen_string_literal: true | ||
|
||
class ProblemCheck::EmailPollingErroredRecently < ProblemCheck | ||
self.priority = "low" | ||
|
||
def call | ||
return no_problem if polling_error_count.to_i == 0 | ||
|
||
problem | ||
end | ||
|
||
private | ||
|
||
def polling_error_count | ||
@polling_error_count ||= Jobs::PollMailbox.errors_in_past_24_hours | ||
end | ||
|
||
def translation_key | ||
"dashboard.email_polling_errored_recently" | ||
end | ||
|
||
def translation_data | ||
{ count: polling_error_count } | ||
end | ||
end |
Oops, something went wrong.