Recientemente tuvimos un problema en el que, después de una serie de confirmaciones, no se pudo ejecutar un proceso de fondo. Ahora, éramos buenos niños y niñas y corríamos rake test
después de cada registro, pero, debido a algunas rarezas en la carga de la biblioteca de Rails, solo ocurría cuando lo ejecutamos directamente desde Mongrel en modo de producción.
Rastreé el error y se debió a una nueva gema de Rails que sobrescribió un método en la clase String de una manera que rompió un uso limitado en el código de Rails en tiempo de ejecución.
De todos modos, para resumir, ¿hay alguna manera, en tiempo de ejecución, de preguntarle a Ruby dónde se ha definido un método? Algo así whereami( :foo )
regresa /path/to/some/file.rb line #45
? En este caso, decirme que se definió en la clase String no sería útil, porque alguna biblioteca lo sobrecargó.
No puedo garantizar que la fuente viva en mi proyecto, por lo que buscarla 'def foo'
no necesariamente me dará lo que necesito, sin mencionar si tengo muchas def foo
, a veces no sé hasta el momento de ejecución cuál puedo estar usando.