WARNING: the mechanism of taking timestamps of directories in order to find out if the content has changed doesn't work reliably across all kinds of filesystems
returns all files contained in directories matched by dir_glob which match file_glob. file_glob must be relative to dir_glob. dir_glob "*/a" with file_glob "*/.txt" is basically equivalent with Dir.glob("/a//.txt") the idea is that the file glob will only be re-eavluated when the content of one of the directories matched by dir_glob has changed. this will only be faster than a normal Dir.glob if the number of dirs matched by dir_glob is relatively large and changes in files affect only a few of them at a time.
# File lib/rgen/util/cached_glob.rb, line 26 def glob root_dirs = Dir.glob(@dir_glob) (@root_dirs - root_dirs).each do |d| remove_root_dir(d) end (@root_dirs & root_dirs).each do |d| update_root_dir(d) if dir_changed?(d) end (root_dirs - @root_dirs).each do |d| update_root_dir(d) end @root_dirs = root_dirs @root_dirs.sort.collect{|d| @files[d]}.flatten end
Generated with the Darkfish Rdoc Generator 2.