I think the current behavior is somewhat surprising, but not because of Rails, it is because of Ruby.
The first paragraph of Pathname in the official docs says: *Pathname represents the name of a file or directory on the filesystem, but not the file itself.* Nice, since we are dealing with file names I would expect Pathname#empty? to be like String#empty? Problem is, Pathname actually has the String-like manipulation API one would expect from the description, and also a whole lot of file and directory API! This is later also acknowledged in the docs *All functionality from File, FileTest, and some from Dir and FileUtils is included, in an unsurprising way. It is essentially a facade for all of these, and more.* If you ask me, I don't really understand this API to be honest, but that is the way it is. So, who decides if #empty? should be interpreted String-wise or File-wise? The Ruby team, and they have decided File-wise. Therefore, our expectacion of #empty? being String-wise has to be corrected. And after that conclusion, the fact that present? is consistent follows, because it is documented that anything that is empty is blank, and that present? is just a convenience negation of being blank. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Core" group. To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-core+unsubscr...@googlegroups.com. To post to this group, send email to rubyonrails-core@googlegroups.com. Visit this group at https://groups.google.com/group/rubyonrails-core. For more options, visit https://groups.google.com/d/optout.