From: Benoit Daloze Date: 2011-11-14T23:37:53+09:00 Subject: [ruby-core:41019] Re: [ruby-trunk - Feature #5628] Module#basename On 14 November 2011 12:58, Thomas Sawyer wrote: > > Issue #5628 has been updated by Thomas Sawyer. > > > @Andrew File::basename is a class method, where as Module#basename is an instance method, so there isn't really any "polymorphic confliction". Are you so sure? ;-) A class method is an instance method on the class, so yes File::basename conflicts with Module#basename: > class Module > def basename > name.split("::").last > end > end > Enumerator::Generator.basename => "Generator" > File.basename ArgumentError: wrong number of arguments (0 for 1..2) from (irb):7:in `basename' > File.basename 'file.ext' => "file.ext" So one calling 'basename' on a Module can expect either a String or an ArgumentError. And changing File::basename to be Module#basename when no arguments are given does not seem a good design at all.