FIX: Clear uploads cache on SiteSetting.refresh!.

This fixes a bug where the return value of uploads site settings
may defer between processes even though we trigger a refresh via
MessageBus.
This commit is contained in:
Guo Xiang Tan
2018-11-16 11:02:51 +08:00
parent 9e86b425bc
commit 0ac5126a78
2 changed files with 36 additions and 4 deletions

View File

@ -269,8 +269,16 @@ module SiteSettingExtension
shadowed_settings.each { |ss| new_hash[ss] = GlobalSetting.send(ss) }
changes, deletions = diff_hash(new_hash, current)
changes.each { |name, val| current[name] = val }
deletions.each { |name, _| current[name] = defaults_view[name] }
changes.each do |name, val|
current[name] = val
clear_uploads_cache(name)
end
deletions.each do |name, _|
current[name] = defaults_view[name]
clear_uploads_cache(name)
end
clear_cache!
end
@ -318,7 +326,7 @@ module SiteSettingExtension
def remove_override!(name)
provider.destroy(name)
current[name] = defaults.get(name, default_locale)
uploads.delete(name)
clear_uploads_cache(name)
clear_cache!
end
@ -326,7 +334,7 @@ module SiteSettingExtension
val, type = type_supervisor.to_db_value(name, val)
provider.save(name, val, type)
current[name] = type_supervisor.to_rb_value(name, val)
uploads.delete(name)
clear_uploads_cache(name)
notify_clients!(name) if client_settings.include? name
clear_cache!
end
@ -480,6 +488,12 @@ module SiteSettingExtension
@uploads[provider.current_site] ||= {}
end
def clear_uploads_cache(name)
if type_supervisor.get_type(name) == :upload && uploads.has_key?(name)
uploads.delete(name)
end
end
def logger
Rails.logger
end