#ruby-on-rails #ruby #httpclient
#ruby-on-rails #ruby #httpclient
Вопрос:
Класс File имеет метод класса size, который принимает путь и возвращает размер файла, на который указывает путь. Что может быть причиной отсутствия метода экземпляра с именем size в файле.
Вот почему это важно для меня.
Я использую драгоценный камень httpclient. Я использую это для загрузки файла на сервер. Например, я бы использовал следующую инструкцию для загрузки файла на сервер с использованием httpclient
file=File.open("foo.txt")
HttpClient.new.put("/upload", file)
Если я не добавляю метод экземпляра размера в класс File, он жалуется, поэтому я пошел дальше и исправил его следующим образом,
class File
def size
@file_size ||= File.size(self.path)
end
end
Это работает, но мне интересно, есть ли причина, по которой метод size не был добавлен в качестве метода экземпляра, и есть ли лучший способ сделать то, что я сделал.
Ответ №1:
Этот метод присутствует в 1.9.2, как описано в документации, поэтому вы можете избежать добавления этого исправления, если метод уже определен.
Еще одна вещь, которую вы сделали, это кэширование результата, что, вероятно, является плохим тоном, поскольку это может измениться при добавлении, усечении или отсоединении файла.
Комментарии:
1. следовало бы взглянуть на документацию 1.9.2. В любом случае, это отвечает на мой вопрос.