mirror of
https://github.com/discourse/discourse.git
synced 2024-12-13 16:53:45 +08:00
2211ffa851
There are a couple of reasons for this. The first one is practical, and related to eager loading. Since /lib is not eager loaded, when the application boots, ProblemCheck["identifier"] will be nil because the child classes aren't loaded. The second one is more conceptual. There turns out to be a lot of inter-dependencies between the part of the problem check system that live in /app and the parts that live in /lib, which probably suggests it should all go in /app.
31 lines
652 B
Ruby
31 lines
652 B
Ruby
# frozen_string_literal: true
|
|
|
|
class ProblemCheck::Problem
|
|
PRIORITIES = %w[low high].freeze
|
|
|
|
attr_reader :message, :priority, :identifier
|
|
|
|
def initialize(message, priority: "low", identifier: nil)
|
|
@message = message
|
|
@priority = PRIORITIES.include?(priority) ? priority : "low"
|
|
@identifier = identifier
|
|
end
|
|
|
|
def to_s
|
|
@message
|
|
end
|
|
|
|
def to_h
|
|
{ message: message, priority: priority, identifier: identifier }
|
|
end
|
|
alias_method :attributes, :to_h
|
|
|
|
def self.from_h(h)
|
|
h = h.with_indifferent_access
|
|
|
|
return if h[:message].blank?
|
|
|
|
new(h[:message], priority: h[:priority], identifier: h[:identifier])
|
|
end
|
|
end
|