# module Rack::Reloader::Stat

### Public Instance Methods

figure_path(file, paths) click to toggle source

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.

    # 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.expand_path(found), stat if found
      end

      return false, false
    end

rotation() { |found, mtime| ... } click to toggle source

    # 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) click to toggle source

    # 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