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__.
···
--- 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__.keysthat solves two problems in one.
__________________________________
Do you Yahoo!?
Yahoo! Small Business - Try our new Resources site