This is my first thread on this mailing list, so bare with me.
I’ve this and it does download TARGET from the FTP server successfully
– I
also have accessed it via lukeftp, i.e. the ftp client that comes with
my
FreeBSD and OpenBSD systems here.
The problem seems to be that ‘pw = gets’ line and I don’t understand it.
I
have even tried closing the ftp connection before that and reopening it
later
but no success.
I’m clueless as to why I’m getting what looks to me like an
Errno::ENOENT
exception that references the ‘PATH’ we Net::FTP#chdir’d to four lines
ago.
When all it is doing is calling gets.
Test run:
C:\Documents and Settings\Owner\Desktop>.\tg.rb “path with spaces”
remote_filename ftpsite username passwd
Password: C:/Documents and Settings/Owner/Desktop/tg.rb:32:in `gets’: No
such fi
le or directory - < the path with spaces > (Errno::ENOENT)
from C:/Documents and Settings/Owner/Desktop/tg.rb:32
Test Code:
ftp = Net::FTP.new( HOST, USER, PASSWD, ACCT )
ftp.chdir( PATH )
ftp.gettextfile( TARGET )
print( "Password: " )
pw = gets
print( “\n” )
if pw
# lock it
else
# un lock it
end #ftp.puttextfile( TARGET )
ftp.close
puts( ‘Please restart the server for the changes to take effect’ )
end
Can any one give me a point in the right direction?
TerryP.
PS:
For any one who is interested in the shotty appearance of the test code.
I do build case prototypes as I go along. So I can test things out in
small
pieces before I begin putting together a ‘complete’ prototype and
finally the
finished program once I am done with testing
And oh yes I do plan on checking out what Ruby offers for Unit Testing
in the
future
I’m clueless as to why I’m getting what looks to me like an Errno::ENOENT
exception that references the ‘PATH’ we Net::FTP#chdir’d to four lines ago.
When all it is doing is calling gets.
If you specify a command line parameter, Kernel#gets treats that as a
file
name and tries to read from that file instead of stdin. If you don’t
want
that, use STDIN.gets instead of Kernel#gets.
I’m clueless as to why I’m getting what looks to me like an Errno::ENOENT
exception that references the ‘PATH’ we Net::FTP#chdir’d to four lines ago.
When all it is doing is calling gets.
If you specify a command line parameter, Kernel#gets treats that as a file
name and tries to read from that file instead of stdin. If you don’t want
that, use STDIN.gets instead of Kernel#gets.
I’m sorry, maybe I’m a little slow, but isn’t “Returns (and assigns to
$_) the
next line from the list of files in ARGV (or $*), or from standard input
if
no files are present on the command line.” basically what I said?
Or are you refering to the fact that my phrasing made it sound as if
gets only
cared about the first command line parameter?
no files are present on the command line." basically what I said?
Or are you refering to the fact that my phrasing made it sound as if gets only
cared about the first command line parameter?
I read your statement to mean that an argument to gets is treated as a
file name. As is obvious now you were referring to the script’s
arguments and not gets’s arguments. My apologies.