在文件夹中我有随机模块文件。
例如。 “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
我怎么能这样做?
由于
答案 0 :(得分:3)
您可以使用Kernel#const_get
方法按名称获取每个模块,所以:
...
Kernel.const_get(data_module_name).instance_methods.each do |method|
...