mirror of
https://github.com/github/rails.git
synced 2026-04-26 03:00:59 -04:00
Fix autoload_once_paths when using Pathnames & ruby 1.9
Under ruby 1.9.2 -
"/var/log".starts_with?(Pathname.new("/var")) # => false
so setting config.autoload_once_paths with Pathnames would not work
This commit is contained in:
@@ -421,7 +421,8 @@ module ActiveSupport #:nodoc:
|
||||
end
|
||||
|
||||
def load_once_path?(path)
|
||||
autoload_once_paths.any? { |base| path.starts_with? base }
|
||||
# to_s works around a ruby1.9 issue where #starts_with?(Pathname) will always return false
|
||||
autoload_once_paths.any? { |base| path.starts_with? base.to_s }
|
||||
end
|
||||
|
||||
# Attempt to autoload the provided module name by searching for a directory
|
||||
|
||||
@@ -520,6 +520,24 @@ class DependenciesTest < Test::Unit::TestCase
|
||||
ActiveSupport::Dependencies.autoload_once_paths = []
|
||||
end
|
||||
|
||||
def test_autoload_once_pathnames_do_not_add_to_autoloaded_constants
|
||||
with_autoloading_fixtures do
|
||||
pathnames = ActiveSupport::Dependencies.autoload_paths.collect{|p| Pathname.new(p)}
|
||||
ActiveSupport::Dependencies.autoload_paths = pathnames
|
||||
ActiveSupport::Dependencies.autoload_once_paths = pathnames
|
||||
|
||||
assert ! ActiveSupport::Dependencies.autoloaded?("ModuleFolder")
|
||||
assert ! ActiveSupport::Dependencies.autoloaded?("ModuleFolder::NestedClass")
|
||||
assert ! ActiveSupport::Dependencies.autoloaded?(ModuleFolder)
|
||||
|
||||
1 if ModuleFolder::NestedClass # 1 if to avoid warning
|
||||
assert ! ActiveSupport::Dependencies.autoloaded?(ModuleFolder::NestedClass)
|
||||
end
|
||||
ensure
|
||||
Object.class_eval { remove_const :ModuleFolder }
|
||||
ActiveSupport::Dependencies.autoload_once_paths = []
|
||||
end
|
||||
|
||||
def test_application_should_special_case_application_controller
|
||||
with_autoloading_fixtures do
|
||||
require_dependency 'application'
|
||||
|
||||
Reference in New Issue
Block a user