需要模块文件并与其模块交互?

时间:2010-07-29 13:16:23

标签: ruby

在文件夹中我有随机模块文件。

例如。 “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 个答案:

答案 0 :(得分:3)

您可以使用Kernel#const_get方法按名称获取每个模块,所以:

...
Kernel.const_get(data_module_name).instance_methods.each do |method|
...