[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Re: Determining what file contains a module/class

Eric Mahurin

5/24/2005 12:46:00 PM


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