ruby metaprogramming mindmap