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