Dry with Ruby metaprogramming