Вокруг огромное количество FTP-серверов.
У нас есть клиенты, которые используют некоторые непонятные проприетарные серверы на базе Windows, и возвращаемый ими список файлов выглядит совершенно иначе, чем в версиях Linux.
Итак, что я закончил, так это для каждой записи файла / каталога, я пытаюсь сменить каталог на него, и если это не работает - считайте это файлом:)
Следующий метод является «пуленепробиваемым»:
# Checks if the give file_name is actually a file.
def is_ftp_file?(ftp, file_name)
ftp.chdir(file_name)
ftp.chdir('..')
false
rescue
true
end
file_names = ftp.nlst.select {|fname| is_ftp_file?(ftp, fname)}
Работает как шарм, но обратите внимание: , если в каталоге FTP есть тонны файлов - этот метод занимает некоторое время , чтобы пройти все из них.