Well, good API is small API, as you not need to study too much methods. And I do not see reason to have read method. It is already done in initiliazation, so what is purpose of such method? Reread configuration (why it is needed? and in such case old implementation never work this way as it store first read)? For me now it is quite clear methods now:
- when you initialize configuration, it is read if file exists in target location
- struct handlers ( provided by Struct ancestor )
- conversion to yaml and hash ( to_s provided by Struct )
- write file configuration to file specified during initialization