Requiring the same file and capturing the constants

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

Raj S. wrote:

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.