为什么Ruby File类不包含size实例方法

Moi*_*aja 3 ruby ruby-on-rails httpclient

File类有一个名为size的类方法,它接受一个路径并返回路径指向的文件的大小.什么是没有在文件上调用大小的实例方法的原因.

这就是为什么它对我很重要.

我正在使用httpclient gem.我用它来将文件上传到服务器.例如,我将使用以下语句使用httpclient将文件上载到服务器

file=File.open("foo.txt")
HttpClient.new.put("/upload", file)
Run Code Online (Sandbox Code Playgroud)

如果我没有将大小实例方法添加到File类,它会抱怨所以我继续进行修改,如下所示:

 class File
   def size
       @file_size ||= File.size(self.path)
   end
 end
Run Code Online (Sandbox Code Playgroud)

这有效,但我想知道是否有理由没有将size方法添加为实例方法,并且有更好的方法来完成我所做的事情.

tad*_*man 8

此方法存在于1.9.2中,因此您可能希望避免在已定义方法的情况下添加此修补程序.

您已经完成的另一件事是缓存结果,这可能是糟糕的形式,因为文件被追加,截断或取消链接时可能会发生变化.