В ruby-doc записи документации для File::exist? и File::exists? дублируются с использованием другой семантики: одна запись говорит, возвращает true если file_name - это каталог; другой говорит, возвращает true, если file_name является файлом.
Я не думаю, что запись верна. Оба метода, похоже, реализованы в file.c с помощью rb_file_exist_p, который, кажется, пытается вызвать fstat(), если переданное значение является IO или stat(), если это строка. Оба fstat() и stat() возвращают 0 при успехе и -1 при ошибке, и это возвращается к rb_file_exist_p и превращается в логический результат. Мне кажется, что
- существует два способа облегчения чтения кода; нет семантических различий
- ни один из них не связан с существующим файлом, но существует ли файл-подобный элемент, например. файл, директорию, сокет, fifo и т.д.
- Возможно, документ может сказать, что методы сообщают вызывающему, есть ли вещь, которая имеет файловую семантику, но более конкретные тесты расскажут, что это на самом деле: например. каталог?, файл?, сокет? и др.
Насколько я понимаю (недостаток) разницы в методах, и стоит ли предлагать изменение документа?