1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

fix boot performance issue

Slight refactor to improve boot performance on some Ruby
implementations (for now).
This commit is contained in:
Aaron Patterson 2016-04-22 09:17:05 -07:00
parent aa804b152f
commit 4a06cc9edd
No known key found for this signature in database
GPG key ID: 953170BCB4FFAFC6

View file

@ -86,16 +86,6 @@ module ActiveSupport
end
class PathHelper
using Module.new {
refine Pathname do
def ascendant_of?(other)
self != other && other.ascend do |ascendant|
break true if self == ascendant
end
end
end
}
def xpath(path)
Pathname.new(path).expand_path
end
@ -112,7 +102,7 @@ module ActiveSupport
lcsp = Pathname.new(paths[0])
paths[1..-1].each do |path|
until lcsp.ascendant_of?(path)
until ascendant_of?(lcsp, path)
if lcsp.root?
# If we get here a root directory is not an ascendant of path.
# This may happen if there are paths in different drives on
@ -145,13 +135,21 @@ module ActiveSupport
dir = dirs_sorted_by_nparts.shift
dirs_sorted_by_nparts.reject! do |possible_descendant|
dir.ascendant_of?(possible_descendant) && descendants << possible_descendant
ascendant_of?(dir, possible_descendant) && descendants << possible_descendant
end
end
# Array#- preserves order.
dirs - descendants
end
private
def ascendant_of?(base, other)
base != other && other.ascend do |ascendant|
break true if base == ascendant
end
end
end
end
end