From: Stefano Crocco Date: 2007-05-17T00:02:03+09:00 Subject: Re: Why doesn't a renamed file adhere to an original variable? Alle mercoled狸 16 maggio 2007, Peter Bailey ha scritto: > I need to send some graphics file over to UNIX land, but, without an > extension. So, I rename the files and try to send them, and, Ruby > complains that the file isn't there. Why is it that a file rename > doesn't continue to be legitimate with the original variable name? When > it's time to "put" the file, Ruby says that the file doesn't exist, I > guess because it still think that the variable is pointing to the file > with the extension. What's the point of File.rename if the files can't > stick with the variable names? > > Thanks a lot, > Peter > > > require 'net/ftp' > ... > > Dir.glob("*.100").each do |arborfile| > File.rename(arborfile, File.basename(arborfile, ".100")) > ftp.putbinaryfile(arborfile.downcase) > ... arborfire is simply a string, it's not related with a file at all. File.rename changes the name of the file on the filesystem. When you use ftp.putbinaryfile, you pass it the old filename, which doesn't refer to a file anymore, since you renamed it. What you want is this: Dir.glob("*.100").each do |arborfile| new_name = File.basename(arborfile, ".100") File.rename arborfile, new_name ftp.putbinaryfile(new_name.downcase) ... I hope this helps Stefano