Determining the Source File of a Class

I'm trying to debug a bug where I seem to have a class that has two defintions, the one I know of, and another one, somewhere, the one I'm getting when I attempt to use the class.

Given a class, is there a way to get name of the file in which it was defined?

MyClass.defintion_file

Something like that?

···

--
Alan Gutierrez - alan@blogometer.com - http://twitter.com/bigeasy

Classes in ruby are "open", which means that they can be extended at any time. So there isn't really a "definition" (at least, for a single location) of a given class.

You also have the case where something isn't opened to have stuff added to it, but instead it can be extended by modules instead.

If you want, you can play with the reflective hooks in Module: method_added, included, extended, etc.

···

On Jul 23, 2010, at 13:40 , Alan Gutierrez wrote:

I'm trying to debug a bug where I seem to have a class that has two defintions, the one I know of, and another one, somewhere, the one I'm getting when I attempt to use the class.

Given a class, is there a way to get name of the file in which it was defined?

MyClass.defintion_file

Something like that?

Ryan Davis wrote:

I'm trying to debug a bug where I seem to have a class that has two defintions, the one I know of, and another one, somewhere, the one I'm getting when I attempt to use the class.

Given a class, is there a way to get name of the file in which it was defined?

MyClass.defintion_file

Something like that?

Classes in ruby are "open", which means that they can be extended at any time. So there isn't really a "definition" (at least, for a single location) of a given class.

Thank you. That answers my question.

You also have the case where something isn't opened to have stuff added to it, but instead it can be extended by modules instead.

If you want, you can play with the reflective hooks in Module: method_added, included, extended, etc.

Sounds like fire hose, but I'm sure there's a clever Ruby way to control the torrent.

Fortunately, I seem to have found the other definition that is being invoked using `find` and `grep`.

···

On Jul 23, 2010, at 13:40 , Alan Gutierrez wrote:

--
Alan Gutierrez - alan@blogometer.com - http://twitter.com/bigeasy