Module: Rack::Reloader::Stat
- Defined in:
- lib/rack/reloader.rb
Instance Method Summary collapse
-
#figure_path(file, paths) ⇒ Object
Takes a relative or absolute
file
name, a couple possiblepaths
that thefile
might reside in. - #rotation ⇒ Object
- #safe_stat(file) ⇒ Object
Instance Method Details
#figure_path(file, paths) ⇒ Object
Takes a relative or absolute file
name, a couple possible paths
that the file
might reside in. Returns the full path and File::Stat for the path.
90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
# File 'lib/rack/reloader.rb', line 90 def figure_path(file, paths) found = @cache[file] found = file if !found and Pathname.new(file).absolute? found, stat = safe_stat(found) return found, stat if found paths.find do |possible_path| path = ::File.join(possible_path, file) found, stat = safe_stat(path) return ::File.(found), stat if found end return false, false end |
#rotation ⇒ Object
71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/rack/reloader.rb', line 71 def rotation files = [$0, *$LOADED_FEATURES].uniq paths = ['./', *$LOAD_PATH].uniq files.map{|file| next if /\.(so|bundle)$/.match?(file) # cannot reload compiled files found, stat = figure_path(file, paths) next unless found && stat && mtime = stat.mtime @cache[file] = found yield(found, mtime) }.compact end |
#safe_stat(file) ⇒ Object
105 106 107 108 109 110 111 |
# File 'lib/rack/reloader.rb', line 105 def safe_stat(file) return unless file stat = ::File.stat(file) return file, stat if stat.file? rescue Errno::ENOENT, Errno::ENOTDIR, Errno::ESRCH @cache.delete(file) and false end |