> Since define_method is private I tend to shy away from forcing a send, but I'm not strongly held to that in this instance.

`instance_eval` and `class_eval` are essentially more intrusive ways to work around privateness (as they change `self` for the block, allowing you to do as many private things as you want rather than just sending one private message), so my general rule of thumb is to prefer `__send__` if it's just one private message send you need.  If you need more than one, I tend to use `class_eval` or `instance_eval`.  That's just my heuristic, though.