diff --git a/activesupport/CHANGELOG b/activesupport/CHANGELOG index 0727790c47..ac3e9eb7e5 100644 --- a/activesupport/CHANGELOG +++ b/activesupport/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* Fixed Dependencies so all modules are able to load missing constants #1173 [Nicholas Seckar] + * Fixed the Inflector to underscore strings containing numbers, so Area51Controller becomes area51_controller #1176 [Nicholas Seckar] * Fixed that HashWithIndifferentAccess stringified all keys including symbols, ints, objects, and arrays #1162 [Nicholas Seckar] diff --git a/activesupport/lib/active_support/dependencies.rb b/activesupport/lib/active_support/dependencies.rb index dd71949399..dd210a8ebd 100644 --- a/activesupport/lib/active_support/dependencies.rb +++ b/activesupport/lib/active_support/dependencies.rb @@ -167,24 +167,24 @@ Object.send(:define_method, :require_or_load) { |file_name| Dependencies.req Object.send(:define_method, :require_dependency) { |file_name| Dependencies.depend_on(file_name) } unless Object.respond_to?(:require_dependency) Object.send(:define_method, :require_association) { |file_name| Dependencies.associate_with(file_name) } unless Object.respond_to?(:require_association) -class Object #:nodoc: - class << self - # Use const_missing to autoload associations so we don't have to - # require_association when using single-table inheritance. - def const_missing(class_id) - if Object.const_defined?(:Controllers) and Object::Controllers.const_available?(class_id) - return Object::Controllers.const_get(class_id) - end - - begin - require_dependency(class_id.to_s.demodulize.underscore) - if Object.const_defined?(class_id) then return Object.const_get(class_id) else raise LoadError end - rescue LoadError => e - raise NameError.new("uninitialized constant #{class_id}").copy_blame!(e) - end +class Module #:nodoc: + # Use const_missing to autoload associations so we don't have to + # require_association when using single-table inheritance. + def const_missing(class_id) + if Object.const_defined?(:Controllers) and Object::Controllers.const_available?(class_id) + return Object::Controllers.const_get(class_id) + end + + begin + require_dependency(class_id.to_s.demodulize.underscore) + if Object.const_defined?(class_id) then return Object.const_get(class_id) else raise LoadError end + rescue LoadError => e + raise NameError.new("uninitialized constant #{class_id}").copy_blame!(e) end end +end +class Object #:nodoc: def load(file, *extras) begin super(file, *extras) rescue Object => exception