On Jul 20, 2010, at 10:52 AM, Rob Biedenharn wrote: > On Jul 20, 2010, at 10:08 AM, James O'Brien wrote: > >> File.open('myfile') do |f| >> puts f.basename; >> end >> >> myfile exists on the filesystem but this code blows up with >> >> undefined method `basename' >> >> could someone explain why (given the docs >> http://ruby-doc.org/core/classes/File.html >> advertise the basename method) >> >> [ruby 1.8.7 (2010-01-10 patchlevel 249) [i486-linux]] >> >> >> Thanks! > > You're looking at the docs for the class method File.basename, but > you're calling basename on an instance of File referenced by f > > puts File.basename('myfile') > > or better: > > puts File.basename('/some/long/path/to/myfile') Actually, a better example (and likely closer to what you expected): puts File.basename(f.path) > > -Rob > > Rob Biedenharn > Rob / AgileConsultingLLC.com http://AgileConsultingLLC.com/ > rab / GaslightSoftware.com http://GaslightSoftware.com/ > >