From 3032aa7db93e327ffad8c1e65b2707221c203936 Mon Sep 17 00:00:00 2001 From: Sam Date: Thu, 9 Mar 2017 18:00:55 -0500 Subject: [PATCH] PERF: avoid looking globals from providers after first call --- app/models/global_setting.rb | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/app/models/global_setting.rb b/app/models/global_setting.rb index 85abcce23b7..bf570ed72d6 100644 --- a/app/models/global_setting.rb +++ b/app/models/global_setting.rb @@ -39,8 +39,21 @@ class GlobalSetting default_provider = FileProvider.from(File.expand_path('../../../config/discourse_defaults.conf', __FILE__)) default_provider.keys.concat(@provider.keys).uniq.each do |key| default = default_provider.lookup(key, nil) + + instance_variable_set("@#{key}_cache", nil) + define_singleton_method(key) do - provider.lookup(key, default) + val = instance_variable_get("@#{key}_cache") + unless val.nil? + val == :missing ? nil : val + else + val = provider.lookup(key, default) + if val.nil? + val = :missing + end + instance_variable_set("@#{key}_cache", val) + val == :missing ? nil : val + end end end end