mirror of
https://github.com/discourse/discourse.git
synced 2025-09-05 08:59:27 +08:00
Check for updates: edge cases when the message on the dashboard doesn't make sense.
This commit is contained in:
parent
72632670db
commit
3c38062802
11 changed files with 208 additions and 30 deletions
|
@ -3,14 +3,30 @@ module DiscourseUpdates
|
|||
class << self
|
||||
|
||||
def check_version
|
||||
DiscourseVersionCheck.new(
|
||||
latest_version: latest_version || Discourse::VERSION::STRING,
|
||||
critical_updates: critical_updates_available?,
|
||||
installed_version: Discourse::VERSION::STRING,
|
||||
installed_sha: (Discourse.git_version == 'unknown' ? nil : Discourse.git_version),
|
||||
missing_versions_count: missing_versions_count || nil
|
||||
# TODO: more info, like links and release messages
|
||||
)
|
||||
version_info = if updated_at.nil?
|
||||
DiscourseVersionCheck.new(
|
||||
installed_version: Discourse::VERSION::STRING,
|
||||
installed_sha: (Discourse.git_version == 'unknown' ? nil : Discourse.git_version),
|
||||
updated_at: nil
|
||||
)
|
||||
else
|
||||
DiscourseVersionCheck.new(
|
||||
latest_version: latest_version,
|
||||
critical_updates: critical_updates_available?,
|
||||
installed_version: Discourse::VERSION::STRING,
|
||||
installed_sha: (Discourse.git_version == 'unknown' ? nil : Discourse.git_version),
|
||||
missing_versions_count: missing_versions_count,
|
||||
updated_at: updated_at
|
||||
)
|
||||
end
|
||||
|
||||
if version_info.updated_at.nil? or
|
||||
(version_info.missing_versions_count == 0 and version_info.latest_version != version_info.installed_version)
|
||||
# Version check data is out of date.
|
||||
Jobs.enqueue(:version_check, all_sites: true)
|
||||
end
|
||||
|
||||
version_info
|
||||
end
|
||||
|
||||
def latest_version
|
||||
|
@ -25,6 +41,15 @@ module DiscourseUpdates
|
|||
($redis.get(critical_updates_available_key) || false) == 'true'
|
||||
end
|
||||
|
||||
def updated_at
|
||||
t = $redis.get(updated_at_key)
|
||||
t ? Time.zone.parse(t) : nil
|
||||
end
|
||||
|
||||
def updated_at=(time_with_zone)
|
||||
$redis.set updated_at_key, time_with_zone.as_json
|
||||
end
|
||||
|
||||
['latest_version', 'missing_versions_count', 'critical_updates_available'].each do |name|
|
||||
eval "define_method :#{name}= do |arg|
|
||||
$redis.set #{name}_key, arg
|
||||
|
@ -45,5 +70,9 @@ module DiscourseUpdates
|
|||
def missing_versions_count_key
|
||||
'missing_versions_count'
|
||||
end
|
||||
|
||||
def updated_at_key
|
||||
'last_version_check_at'
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue