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

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 7b9e0f53c7
commit 35864db961

View file

@ -181,11 +181,7 @@ module ActionView
def query(path, details, formats) def query(path, details, formats)
query = build_query(path, details) query = build_query(path, details)
template_paths = Dir[query].reject { |filename| template_paths = find_template_paths query
File.directory?(filename) ||
# deals with case-insensitive file systems.
!File.fnmatch(query, filename, File::FNM_EXTGLOB)
}
template_paths.map { |template| template_paths.map { |template|
handler, format, variant = extract_handler_and_format_and_variant(template, formats) handler, format, variant = extract_handler_and_format_and_variant(template, formats)
@ -200,6 +196,26 @@ module ActionView
} }
end 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. # Helper for building query glob string based on resolver's pattern.
def build_query(path, details) def build_query(path, details)
query = @pattern.dup query = @pattern.dup