diff --git a/lib/site_setting_extension.rb b/lib/site_setting_extension.rb index 01bc60f9ded..4bfe937d120 100644 --- a/lib/site_setting_extension.rb +++ b/lib/site_setting_extension.rb @@ -154,33 +154,36 @@ module SiteSettingExtension end def client_settings_json - Discourse - .cache - .fetch(SiteSettingExtension.client_settings_cache_key, expires_in: 30.minutes) do - client_settings_json_uncached - end + key = SiteSettingExtension.client_settings_cache_key + json = Discourse.cache.fetch(key, expires_in: 30.minutes) { client_settings_json_uncached } + Rails.logger.error("Nil client_settings_json from the cache for '#{key}'") if json.nil? + json || "" + rescue => e + Rails.logger.error("Error while retrieving client_settings_json: #{e.message}") + "" end def client_settings_json_uncached MultiJson.dump( Hash[ - *@client_settings - .map do |name| - value = - if deprecated_settings.include?(name.to_s) - public_send(name, warn: false) - else - public_send(name) - end - type = type_supervisor.get_type(name) - value = value.to_s if type == :upload - value = value.map(&:to_s).join("|") if type == :uploaded_image_list + *@client_settings.flat_map do |name| + value = + if deprecated_settings.include?(name.to_s) + public_send(name, warn: false) + else + public_send(name) + end + type = type_supervisor.get_type(name) + value = value.to_s if type == :upload + value = value.map(&:to_s).join("|") if type == :uploaded_image_list - [name, value] - end - .flatten + [name, value] + end ], ) + rescue => e + Rails.logger.error("Error while generating client_settings_json_uncached: #{e.message}") + nil end # Retrieve all settings