У меня есть общий метод сортировки файлов, который падает из-за неработающей ссылки в одном каталоге.Кажется, ruby пытается разрешить символическую ссылку.Это происходит, когда я сортирую по методу, например :mtime
или :size
.
Я хочу, чтобы ruby File
взял данные из файла ссылок (в текущем каталоге) сам, не разрешая его.Когда я запускаю Unix stat
в указанном файле, который дает , дает мне mtime, atime, ctime и т. Д., Я хотел бы использовать это.
например File.mtime("mail")
и File.stat("mail").mtime
оба дают мне ENOENT
.
Обратите внимание, что когда я запускаю stat mail
в irb (статистика в обратных галочках), я получаю информацию для файла.
Мой оригинальный код был:
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
выдаст информацию о битых ссылках.