Как предотвратить исправление неработающей символической ссылки в ruby ​​File

rahul спросил: 11 марта 2019 в 07:41 в: ruby

У меня есть общий метод сортировки файлов, который падает из-за неработающей ссылки в одном каталоге. Кажется, ruby ​​пытается разрешить символическую ссылку. Это происходит, когда я сортирую по методу, например :mtime или :size.

Я хочу, чтобы ruby ​​File взял данные из сам файл ссылки (в текущем каталоге) без его разрешения. Когда я запускаю unix stat в указанном файле, который даёт , мне дают mtime, atime, ctime и т. Д., Я хотел бы использовать это.

например. File.mtime("mail") и File.stat("mail").mtime дают мне ENOENT.

Обратите внимание, что когда я запускаю stat mail в irb ( stat in backticks), я получаю информацию для файла.

Мой оригинальный код был:

files = files.sort_by { |f| File.send(func, f) }

, где func - метод символ, переданный этому методу, например :mtime или :atime или :size и т. д.

Моя текущая попытка проверяет существование файла, но затем не ' не знаю, что делать, чтобы получить значения из рассматриваемого файла.

files = files.sort_by do |f| 
    if File.exist? f
       File.send(func, f) }
    else
      # dead link what to do here? I don't want ruby to resolve f
    end
end

edit: просто чтобы уточнить. Я не хочу скрыть мертвые ссылки. Я должен показать запись с информацией о самом файле так же, как это сделал бы Finder или любой другой файловый менеджер.

edit: см. Ответ ниже. lstat предоставит информацию о мертвых ссылках.


0 ответов