Gitlab::FakeApplicationSettings doesn't respond to all the methods ApplicationSetting responds to itself
In some cases (when there's no DB connection or pending migrations), we return a Gitlab::FakeApplicationSettings
object instead of an ApplicationSetting
object to avoid failures due to unknown columns/attributes.
The issue is that in Gitlab::CurrentSettings.method_missing
we delegate to current_application_settings
which can be an Gitlab::FakeApplicationSettings
in the cases described above.
When an attribute reader or predicate method is called, it works because we instantiate Gitlab::FakeApplicationSettings
with the current ApplicationSetting.defaults
in which we merge the current ApplicationSetting
attributes.
But when a method from ApplicationSetting
is called, it fails hard since Gitlab::FakeApplicationSettings
doesn't respond to it.