DEV: introduce new API to look up dynamic site setting

This removes all uses of both `send` and `public_send` from consumers of
SiteSetting and instead introduces a `get` helper for dynamic lookup

This leads to much cleaner and safer code long term as we are always explicit
to test that a site setting is really there before sending an arbitrary
string to the class

It also removes a couple of risky stubs from the auth provider test
This commit is contained in:
Sam Saffron
2019-05-07 11:00:09 +10:00
parent 47995d2d89
commit 9be70a22cd
33 changed files with 99 additions and 73 deletions

View File

@ -81,7 +81,7 @@ class Plugin::Instance
end
def enabled?
@enabled_site_setting ? SiteSetting.send(@enabled_site_setting) : true
@enabled_site_setting ? SiteSetting.get(@enabled_site_setting) : true
end
delegate :name, to: :metadata
@ -532,7 +532,7 @@ class Plugin::Instance
rescue NotImplementedError
provider.authenticator.define_singleton_method(:enabled?) do
Discourse.deprecate("#{provider.authenticator.class.name} should define an `enabled?` function. Patching for now.")
return SiteSetting.send(provider.enabled_setting) if provider.enabled_setting
return SiteSetting.get(provider.enabled_setting) if provider.enabled_setting
Discourse.deprecate("#{provider.authenticator.class.name} has not defined an enabled_setting. Defaulting to true.")
true
end