Method-Objekte zu nutzen hat allerdings auch 'ne Menge Nachteile. Zum einen bekommst du wirklich nur Zugriff auf Methoden, nicht aber auf andere mögliche Responses von Objekten, weiterhin ist die Performance auch nicht so gut, weil die komplette Methode dabei im Speicher kopiert wird.

Der gängige Weg in Ruby um eine Methode mit einem variablen Namen und variablen Parametern auszuführen ist Object#send. Das bekommt als ersten Parameter den Namen der Methode (entweder als String oder Symbol) und zusätzlich noch die Parameter die man der Methode mitschicken will.

Code:
5.send(:+, 3) #=> 8
4.send("*", 8) #=> 32
a = [1, nil, 3, nil]
a.send("compact!") #=> [1, 3]
a.send(:push, 4, 5, 6) #=> [1, 3, 4, 5, 6]