feature detect for FNM_EXTGLOB for older Ruby. Fixes #15053

This commit is contained in:
Aaron Patterson
2014-05-10 11:52:13 -07:00
parent 03e016f22a
commit c40df47055

View File

@@ -120,11 +120,7 @@ module ActionView
def query(path, details, formats)
query = build_query(path, details)
template_paths = Dir[query].reject { |filename|
File.directory?(filename) ||
# deals with case-insensitive file systems.
!File.fnmatch(query, filename, File::FNM_EXTGLOB)
}
template_paths = find_template_paths query
template_paths.map { |template|
handler, format = extract_handler_and_format(template, formats)
@@ -137,6 +133,26 @@ module ActionView
}
end
if File.const_defined? :FNM_EXTGLOB
def find_template_paths(query)
Dir[query].reject { |filename|
File.directory?(filename) ||
# deals with case-insensitive file systems.
!File.fnmatch(query, filename, File::FNM_EXTGLOB)
}
end
else
def find_template_paths(query)
# deals with case-insensitive file systems.
sanitizer = Hash.new { |h,dir| h[dir] = Dir["#{dir}/*"] }
Dir[query].reject { |filename|
File.directory?(filename) ||
!sanitizer[File.dirname(filename)].include?(filename)
}
end
end
# Helper for building query glob string based on resolver's pattern.
def build_query(path, details)
query = @pattern.dup