I have one problem with this specific method. It does way too much. The fact that all the methods this call act on the method_name or derivations of it almost cries out to create an object to handle building the method.

We had a similar case in anima a few days ago and @snusnu made a refactoring that broke out the method creation into a separate method, and it simplified things and made things easier to test: https://github.com/mbj/anima/commit/6fd14c411e3d69f4d29ba8f91bea1328a636926f

I probably wouldn't block a release for this, but it's something I'll probably end up doing in the near future. I also expect more refactorings to happen once I attempt to integrate memoizable inside adamantium, replacing the memoization code with this gem's code.