29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
# File 'lib/jetel/modules/modules.rb', line 29
def modules(modules_dir = File.join(File.dirname(__FILE__)), auto_require = true, require_only = false)
dir = File.absolute_path(modules_dir)
res = Dir.entries(dir).map do |entry|
dir_path = File.join(dir, entry)
next unless File.directory?(dir_path)
next if entry == '.' || entry == '..'
full_path = File.join(dir_path, "#{entry}.rb")
next unless File.exist?(full_path)
require(full_path) if auto_require
next if require_only
class_name = entry.camelize
qualified_class_name = "Jetel::Modules::#{class_name}"
{
name: entry,
path: full_path,
class_name: class_name,
qualified_class_name: qualified_class_name,
klass: auto_require ? Kernel.qualified_const_get(qualified_class_name) : nil
}
end
res.compact
end
|