class Settings DEFAULTS = { theme: "system", digest: false }.freeze def initialize(overrides = {}) @values = DEFAULTS.merge(overrides).freeze end def [](key) @values.fetch(key) { raise KeyError, "unknown setting #{key}" } end end