--- 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/