Ruby Hash/OpenStruct hybrid