Module: Autoloading
- Defined in:
- lib/autoloading.rb,
lib/autoloading/version.rb
Constant Summary collapse
- VERSION =
"0.0.4"
Instance Method Summary collapse
- #autoload_without_namespacing(*dirnames) ⇒ Object
- #const_missing(cname) ⇒ Object
-
#underscore(camel_cased_word) ⇒ Object
Based on ActiveSupport, removed inflections.
Instance Method Details
#autoload_without_namespacing(*dirnames) ⇒ Object
37 38 39 40 |
# 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) ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# 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) ⇒ Object
Based on ActiveSupport, removed inflections. github.com/rails/rails/blob/v4.1.0.rc1/activesupport/lib/active_support/inflector/methods.rb
28 29 30 31 32 33 34 35 |
# 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 |