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

时间:2011-10-07 00:31:18

标签: ruby-on-rails ruby httpclient

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

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

我正在使用httpclient gem。我用它来将文件上传到服务器。例如,我将使用以下语句使用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 个答案:

答案 0 :(得分:8)

此方法存在于1.9.2 as documented中,因此如果已定义方法,您可能希望避免添加此修补程序。

你做的另一件事是缓存结果,这可能是糟糕的形式,因为文件被追加,截断或取消链接时可能会改变。