requiring the same file and capturing the constants

R

Raj Singh

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
 
J

Joel VanderWerf

Raj said:
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.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,766
Messages
2,569,569
Members
45,043
Latest member
CannalabsCBDReview

Latest Threads

Top