--- Nicholas Wieland <nicholas_wieland / yahoo.it> wrote: > - Austin Ziegler : > > On 5/21/05, Nicholas Wieland <nicholas_wieland / yahoo.it> > wrote: > > > Hi *, > > > I need to find the file that contains a known module or > class, to > > > "inspect" the source code and extract what I need from > the file. > > > Something like: > > > > > > >> require 'digest' > > > >> Digest::base_file > > > '/usr/local/lib/ruby/1.8/digest.rb' > > > > The problem in this case is that digest is specifically in > digest.so, > > not digest.rb. It also doesn't help if a module or class is > defined > > across multiple files, which is certainly permitted in > Ruby. > > Well, I've used digest just to make an example, my question > was more > general :=) > Actually I'm using something like: > > SCRIPT_LINES__ = {} > require 'net/ftp' > SCRIPT_LINES__.keys > > that solves two problems in one. If you wanted to do it like you initially wanted, you could redefine require to get the filenames from SCRIPT_LINES__ (as above) and get the new classes added from ObjectSpace.each_object(Class). Based on that you could add the base_file method. But, you'd only be able to detect when a new class is added and not when it is being modified. With that SCRIPT_LINES__ Hash, it doesn't look like you even need to read the files since the file content is already in SCRIPT_LINES__. __________________________________ Do you Yahoo!? Yahoo! Small Business - Try our new Resources site http://smallbusiness.yahoo.com/resources/