aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport
diff options
context:
space:
mode:
Diffstat (limited to 'activesupport')
-rw-r--r--activesupport/CHANGELOG2
-rw-r--r--activesupport/lib/active_support/dependencies.rb15
-rw-r--r--activesupport/test/dependencies_test.rb7
3 files changed, 16 insertions, 8 deletions
diff --git a/activesupport/CHANGELOG b/activesupport/CHANGELOG
index 54f9b4e4cc..33961ce1c7 100644
--- a/activesupport/CHANGELOG
+++ b/activesupport/CHANGELOG
@@ -1,5 +1,7 @@
*SVN*
+* Fix loadable_constants_for_path to handle load paths that do not end with a slash. [Nicholas Seckar]
+
* Fix logic error in determining what was loaded by a given file. Closes #6039. [Nicholas Seckar]
* Equate Kernel.const_missing with Object.const_missing. Fixes #5988. [Nicholas Seckar]
diff --git a/activesupport/lib/active_support/dependencies.rb b/activesupport/lib/active_support/dependencies.rb
index 1b027aa75b..4a4861220e 100644
--- a/activesupport/lib/active_support/dependencies.rb
+++ b/activesupport/lib/active_support/dependencies.rb
@@ -125,19 +125,18 @@ module Dependencies #:nodoc:
expanded_path = File.expand_path(path)
bases.collect do |root|
- expanded_root = File.expand_path root
- next unless expanded_path.starts_with? expanded_root
+ expanded_root = File.expand_path(root)
+ next unless %r{\A#{Regexp.escape(expanded_root)}(/|\\)} =~ expanded_path
nesting = expanded_path[(expanded_root.size)..-1]
nesting = nesting[1..-1] if nesting && nesting[0] == ?/
next if nesting.blank?
- names = [nesting.camelize]
-
- # Special case: application.rb might define ApplicationControlller.
- names << 'ApplicationController' if nesting == 'application'
-
- names
+ [
+ nesting.camelize,
+ # Special case: application.rb might define ApplicationControlller.
+ ('ApplicationController' if nesting == 'application')
+ ]
end.flatten.compact.uniq
end
diff --git a/activesupport/test/dependencies_test.rb b/activesupport/test/dependencies_test.rb
index fcd2889ac2..c1e95f51a9 100644
--- a/activesupport/test/dependencies_test.rb
+++ b/activesupport/test/dependencies_test.rb
@@ -250,6 +250,13 @@ class DependenciesTest < Test::Unit::TestCase
end
end
+ def test_loadable_constants_with_load_path_without_trailing_slash
+ path = File.dirname(__FILE__) + '/autoloading_fixtures/class_folder/inline_class.rb'
+ with_loading 'autoloading_fixtures/class/' do
+ assert_equal [], Dependencies.loadable_constants_for_path(path)
+ end
+ end
+
def test_qualified_const_defined
assert Dependencies.qualified_const_defined?("Object")
assert Dependencies.qualified_const_defined?("::Object")