From: Joel VanderWerf Date: 2008-05-14T01:53:34+09:00 Subject: Re: requiring the same file and capturing the constants Raj Singh wrote: > file1.txt > ----------------- > class Person > end > module Speak > end > > > The task is to printout all the constants listed in the file. In this > case there are Person and Speak. > > I need to handle two cases. > 1) The system loads the file for the first time. I guess in this case I > can use ObjectSpace.each_object or ObjectSpace.some_method from API to > get before and after picture. Subtract the before picture and I will get > the constants. > > 2) The second case is when file1.txt is already loaded into the > application. So in this case I can't do before and after thing. How can > I get constants in this case without before and after picture. > > Thanks If you have control over *how* the file is loaded, you can do this, using http://redshift.sourceforge.net/script: [~/tmp] cat file.rb class Person end module Speak end [~/tmp] cat main.rb require 'script' mod = Script.load 'file.rb' p mod.constants [~/tmp] ruby main.rb ["Person", "Speak"] The trick is really just reading the file, creating a module, and calling module_eval on that with the contents of the file. -- vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407