module Autoloading
Constants
- VERSION
Public Instance Methods
autoload_without_namespacing(*dirnames)
click to toggle source
# File lib/autoloading.rb, line 37 def autoload_without_namespacing(*dirnames) @autoload_without_namespacing ||= [] @autoload_without_namespacing.concat(Array(dirnames).flatten) end
const_missing(cname)
click to toggle source
Calls superclass method
# File lib/autoloading.rb, line 4 def const_missing(cname) prefix = underscore(self.name.to_s) filename = underscore(cname.to_s) path = "#{prefix}/#{filename}" begin require path return const_get(cname) rescue LoadError tried_requires = [path] (@autoload_without_namespacing || []).each do |dirname| path = "#{prefix}/#{dirname}/#{filename}" tried_requires << path begin require path return const_get(cname) rescue LoadError end end super end end
underscore(camel_cased_word)
click to toggle source
Based on ActiveSupport, removed inflections. github.com/rails/rails/blob/v4.1.0.rc1/activesupport/lib/active_support/inflector/methods.rb
# File lib/autoloading.rb, line 28 def underscore(camel_cased_word) word = camel_cased_word.to_s.gsub('::', '/') word.gsub!(/([A-Z\d]+)([A-Z][a-z])/,'\1_\2') word.gsub!(/([a-z\d])([A-Z])/,'\1_\2') word.tr!("-", "_") word.downcase! word end