Todavía soy nuevo en Ruby y, básicamente, estoy escribiendo mi primer microprograma después de terminar el libro de Cooper. Me señalaron la dirección para evitar parches de mono, pero el problema es que no sé cuáles son las alternativas para lograr el mismo comportamiento. Básicamente, quiero agregar un nuevo método al que pueda acceder cada objeto de cadena. La forma obvia de parche de monos es:Alternativas a las clases básicas de reparación de monos
class String
def do_magic
...magic...
end
end
Recuerdo que hay una manera de usar String.send. Pero no recuerdo cómo se hizo ni dónde lo leí. ¿Alguien puede señalar alguna alternativa que aún me permita poner ese método a disposición de la clase String y los objetos secundarios?
puedo ver cómo es realmente depende de la situación y la naturaleza del proyecto en sí. Y creo que esto también se aplicaría a todos los pares do/do not. Considerando mi caso particular, sí, tiene sentido que no duela. Después de todo, estoy agregando un nuevo método. ¡Gracias por la aclaración! – dmondark
El parche de mono es una pendiente resbaladiza, en el mejor de los casos. Puede parecer elegante para equipos pequeños en proyectos de código cerrado, pero nunca se sabe cuándo su código fuente puede ser empaquetado como una gema o copiado por alguien más adelante, y si quieren que su Cadena haga do_magic de una manera ligeramente diferente, luego, un método parche mono sobrescribirá al otro y no se lanzará ninguna advertencia. Es una receta para errores difíciles de encontrar. Es especialmente problemático si está sobrescribiendo los métodos de las clases base incluidas con Ruby. – emery