Как определить файловую систему для пути или файла в Ruby? - PullRequest
1 голос
/ 09 июня 2011

Мне нужно создать безопасные имена файлов в Windows (с поддержкой символов иностранного языка). Некоторые из сред разработки - Mac, другие Windows. Наши автоматизированные тесты выполняются на компьютере под управлением Windows, а приложение устанавливается на компьютерах под управлением Windows. Файловые системы налагают свои собственные правила на то, что составляет допустимое имя файла (в частности, такие символы, как <,>, "и разделители пути недопустимы в NTFS).

Я хотел бы написать несколько тестов, которые фактически проверяют саму файловую систему. Я пытаюсь не проверять тесты, потому что тогда я ничего не тестирую в реальной системе, а просто проверяю, что код обрабатывает ложные исключения. Тесты должны по крайней мере запускаться на Mac (это нормально, если они пропускают тест, когда присутствует Mac), но я также хотел бы знать, на какой тип файловой системы работают тесты. NTFS отличается от Fat32. ПРИМЕЧАНИЕ: я не прошу о реализации метода безопасного имени файла, у меня уже есть это. Я спрашиваю, есть ли в Ruby какой-либо способ определить, в какой файловой системе я сейчас нахожусь, для целей тестирования. Многократный поиск и документы для File, FileUtils, Dir и даже ENV ничего не нашли.

1 Ответ

1 голос
/ 09 июня 2011

Вы можете попробовать sys-filesystem драгоценный камень:

Это интерфейс для получения информация о файловой системе аля 'df' на Unix, но также работает на Windows.

irb(main):001:0> require 'sys/filesystem'
=> true
irb(main):006:0> Sys::Filesystem.stat("D:\\").base_type
=> "NTFS"
...