Skip to content

Remove Settingslogic use

Today I learned that Settingslogic inherits from Hash and defines accessors for keys. Because we define default as a Gitaly storage name, this causes Settingslogic to redefine Hash#default, which causes Hash#dig to fail when the key doesn't exist: #285449 (comment 451533328).

This seems like a dangerous situation: if we ever have a key that conflicts with a Hash method, the Settings object may be calling redefined methods and cause strange failures such as the one I mentioned.

We might want to solve this by not inheriting directly from a Hash, but export the [], []=, and to_h methods.

!113040 (merged) will drop the use of Settingslogic entirely.

Edited by Stan Hu