Requiring the same file and capturing the constants


class Person
module Speak

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.


Raj S. wrote:

If you have control over how the file is loaded, you can do this,

[~/tmp] cat file.rb
class Person
module Speak
[~/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.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs