Требовать файл модуля и взаимодействовать с его модулем? - PullRequest
1 голос
/ 29 июля 2010

В папке есть файлы случайных модулей.

например.«user.rb», который содержит «module User», «customer.rb», который содержит «module Customer» и т. д.

Я хочу запросить все файлы и распечатать все методы модуля.

Вот мой текущий код:

  @@data_module_methods = []

  # iterate through all files in the data folder
  Dir[File.join(APP_ROOT, "data", "*.rb")].each do |file|
    require file
    # give me the module name from the filepath (so ./data/user.rb will give me User)
    data_module_name = file.split("/").[](-1).split(".").[](0).capitalize

    # ERROR: print all method names, HERE IT FAILS BECAUSE data_module_name is a string and not the module:)
    data_module_name.instance_methods.each do |method|
      @@data_module_methods << method
    end
  end

Как я могу это сделать?

Спасибо

1 Ответ

3 голосов
/ 29 июля 2010

Вы можете использовать метод Kernel#const_get, чтобы получить каждый модуль по имени, поэтому:

...
Kernel.const_get(data_module_name).instance_methods.each do |method|
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...