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/
>
>