I've inherited a large pile of Ruby code that's, frankly, close to impossible to understand for a mortal like myself. It's actually Rspec unit test code, but the structure is "highly unusual" to put it nicely.
What I'd like to be able to do is run the code, and have the following information logged somewhere:
- every method that gets invoked, including the name of the class that defines the method, and the filename where the invoked method has been defined (yep, we've got the same class/method defined in multiple different files, and it's tough to know which is being invoked)
- (optionally) the parameters passed to each method invoked
With that, I could start trying to refactor it. Without it, it's going to be a very difficult task to get it straightened out, due to the size of the code base (20k+ unit test cases).
I can't afford to go in and perform wholesale edits to the code being run, because it breaks when you even use harsh language around it (i.e. frequently). Instead, I need to be able to instrument the code in its existing state, or with minimal changes to what exists now.
Is there a way of logging this level of detail without making wholesale changes to the code base? I've had a look at the Ruby profiler to see if it could help, and it probably could; I'm curious if there's a better way (particularly logging the filename containing the invoked method).
Thanks in advance