Think the behavior of the rescues deserves a comment, why is it only logged if there is a default value? And why just log TypeError and not others. Also, only an error if default is nil.

I would find it surprising if I got default values if I have a yaml file with errors in it for whatever reason (except things like file does not exist, when its existence is optional).... But maybe I am missing something.