Refresh the site after updating certain site settings

This commit is contained in:
riking
2014-02-20 21:52:11 -08:00
parent b3a860027f
commit ccd3e635d2
9 changed files with 29 additions and 6 deletions
+8
View File
@@ -172,6 +172,14 @@ module Discourse
!!$redis.get(readonly_mode_key)
end
def self.request_refresh!
# Causes refresh on next click for all clients
#
# This is better than `MessageBus.publish "/file-change", ["refresh"]` because
# it spreads the refreshes out over a time period
MessageBus.publish '/global/asset-version', 'clobber'
end
def self.git_version
return $git_version if $git_version
+12
View File
@@ -42,6 +42,10 @@ module SiteSettingExtension
@hidden_settings ||= []
end
def refresh_settings
@refresh_settings ||= []
end
def setting(name_arg, default = nil, opts = {})
name = name_arg.to_sym
mutex.synchronize do
@@ -55,6 +59,9 @@ module SiteSettingExtension
if opts[:hidden] == true
hidden_settings << name
end
if opts[:refresh] == true
refresh_settings << name
end
setup_methods(name, current_value)
end
end
@@ -204,9 +211,14 @@ module SiteSettingExtension
defaults.has_key?(name.to_sym) || defaults.has_key?("#{name}?".to_sym)
end
def requires_refresh?(name)
refresh_settings.include?(name.to_sym)
end
def set(name, value)
if has_setting?(name)
self.send("#{name}=", value)
Discourse.request_refresh! if requires_refresh?(name)
else
raise ArgumentError.new("No setting named #{name} exists")
end