module ApplicationModule::Autoloading

Public Instance Methods

autoload_file(filepath) click to toggle source
# File lib/application_module/autoloading.rb, line 3
def autoload_file(filepath)
  klass_name = filepath[%r{([^/]+)\.rb$}, 1].camelize
  autoload klass_name.to_sym, filepath
end
autoload_without_namespacing(dirnames) click to toggle source
# File lib/application_module/autoloading.rb, line 8
def autoload_without_namespacing dirnames
  @autoload_without_namespacing_dirs ||= []
  Array(dirnames).each do |dirname|
    @autoload_without_namespacing_dirs << dirname
    Dir[path.join(dirname, "*_#{ActiveSupport::Inflector.singularize(dirname)}.rb")].each do |p|
      autoload_file(p)
    end
    Dir[path.join(dirname, "*.rb")].each do |p|
      autoload_file(p)
    end
  end
end
const_missing(const_name) click to toggle source

Overrides const_missing in ActiveSupport::Dependencies

Calls superclass method
# File lib/application_module/autoloading.rb, line 22
def const_missing(const_name)
  filename = const_name.to_s.underscore
  dirs = [nil] + (@autoload_without_namespacing_dirs || [])
  dirs.each do |dir|
    filepath = path.join(*([dir, "#{filename}.rb"].compact))
    if File.exists? filepath
      load filepath.to_s
      return const_get(const_name)
    end
  end
  super
end