lib/loader/autoload.rb in loader-2.0.0 vs lib/loader/autoload.rb in loader-2.1.0

- old
+ new

@@ -5,22 +5,42 @@ class << self def pwd if !!ENV['BUNDLE_GEMFILE'] ENV['BUNDLE_GEMFILE'].split(File::Separator)[0..-2].join(File::Separator) + elsif defined?(Rails) && Rails.respond_to?(:root) && Rails.root + Rails.root.to_s else Dir.pwd end end def try_load_by(caller_class,name) levels = generate_levels(caller_class, name) - ['lib',nil].each do |folder| - levels.map{|str| File.join(*[pwd,folder,"#{underscore(str)}.rb"].compact) - }.sort{|a,b| b.length <=> a.length }.each do |path| - return if File.exist?(path) && require(path) + [ + nil, + 'lib', + File.join('{application,app,api}','*'), + File.join('**','*') + ].each do |folder| + return if load_by_folder(levels,folder) + end + end + + def load_by_folder(levels,folder=nil) + + desc_ary(levels.map{|str| File.join(*[pwd,folder,"#{underscore(str)}.rb"].compact)}).each do |path_constructor| + desc_ary(Dir.glob(path_constructor)).each do |path| + return true if File.exist?(path) && require(path) end end + + return false + + end + + def desc_ary(array) + array.sort{|a,b| b.length <=> a.length } end def generate_levels(klass, name) levels = klass.to_s.split('::').reduce([]) { |m, c| m << [(last_obj = m.last), c].compact.join('::');m \ No newline at end of file