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
···
--
Email and shopping with the feelgood factor!
55% of income to good causes. http://www.ippimail.com
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.
On 04.11.2007 11:43, sepp2k@googlemail.com wrote:
> 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.
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?
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.
Kind regards
robert
···
On 04.11.2007 13:08, sepp2k@googlemail.com wrote:
Robert Klemme wrote:
On 04.11.2007 11:43, sepp2k@googlemail.com wrote:
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.
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?
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.
HTH,
Sebastian
--
Jabber: sepp2k@jabber.org
ICQ: 205544826
Works perfectly! I never realized there was a Kernel#gets as well, only knew
about IO#gets. If I did know about it I would've just RTFM... Sorry =/
Thanks !
And thanks everyone for not flaming me for forgetting the subject line...
TerryP.
···
On 04.11.2007 13:08, sepp2k@googlemail.com wrote:
Robert Klemme wrote:
On 04.11.2007 11:43, sepp2k@googlemail.com wrote:
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.
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?
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.
Kind regards
robert
--
Email and shopping with the feelgood factor!
55% of income to good causes. http://www.ippimail.com