From b8e5208162576d3c8529fce525a183667b4e9a62 Mon Sep 17 00:00:00 2001
From: David Taylor <david@taylorhq.com>
Date: Wed, 20 Nov 2019 16:39:47 +0000
Subject: [PATCH] DEV: Add convenience method to check info about a site
 setting

This is only defined in a console environment. For example:

```
[1] pry(main)> SiteSetting.info(:title)
=> {:resolved_value=>"Globally Overridden Title",
 :default_value=>"Discourse",
 :global_override=>"Globally Overridden Title",
 :database_value=>"Test Discourse",
 :refresh?=>false,
 :client?=>true,
 :secret?=>false}
```
---
 lib/site_setting_extension.rb | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/lib/site_setting_extension.rb b/lib/site_setting_extension.rb
index a60c9dc7da6..c19eb8814e7 100644
--- a/lib/site_setting_extension.rb
+++ b/lib/site_setting_extension.rb
@@ -413,6 +413,22 @@ module SiteSettingExtension
     end
   end
 
+  if defined?(Rails::Console)
+    # Convenience method for debugging site setting issues
+    # Returns a hash with information about a specific setting
+    def info(name)
+      {
+        resolved_value: get(name),
+        default_value: defaults[name],
+        global_override: GlobalSetting.respond_to?(name) ? GlobalSetting.public_send(name) : nil,
+        database_value: provider.find(name)&.value,
+        refresh?: refresh_settings.include?(name),
+        client?: client_settings.include?(name),
+        secret?: secret_settings.include?(name),
+      }
+    end
+  end
+
   protected
 
   def clear_cache!