improve hash attributes failure message by caching values and enumerating in output
changelog for #668
[skip ci]