Module: Jetel::Modules
- Defined in:
- lib/jetel/modules/ip/ip.rb,
lib/jetel/modules/module.rb,
lib/jetel/modules/modules.rb,
lib/jetel/modules/nga/nga.rb,
lib/jetel/modules/gadm/gadm.rb,
lib/jetel/modules/sfpd/sfpd.rb,
lib/jetel/modules/alexa/alexa.rb,
lib/jetel/modules/geolite/geolite.rb,
lib/jetel/modules/iso3166/iso3166.rb,
lib/jetel/modules/wifileaks/wifileaks.rb
Defined Under Namespace
Classes: Alexa, Gadm, Geolite, Ip, Iso3166, Module, Nga, Sfpd, Wifileaks
Class Method Summary collapse
Class Method Details
.modules(modules_dir = File.join(File.dirname(__FILE__)), auto_require = true, require_only = false) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/jetel/modules/modules.rb', line 7 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 file if auto_require true require(full_path) if auto_require # Go to next file if require_only mode next if require_only class_name = entry.camelize qualified_class_name = "Jetel::Modules::#{class_name}" # Return value from map iteration { 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 # Remove nil values and return res.compact end |