 
 This page contains automated test results for code from O'Reilly's Ruby Cookbook. If this code looks interesting or useful, you might want to buy the whole book.
| Being an FTP Client | ||
|---|---|---|
| Code | Expected | Actual | 
| require 'net/ftp'
ftp = Net::FTP.open('ftp.ibiblio.org') do |ftp|
  ftp.login
  ftp.chdir('pub/linux/')
  ftp.list('*Linux*') { |file| puts file }
  puts
  puts 'Saving a text file to disk while processing it.'
  ftp.gettextfile('How-do-I-get-Linux') { |line| puts "! #{line}" }
  puts "Saved #{File.size 'How-do-I-get-Linux'} bytes."
  puts
  puts 'Saving a binary file to disk.'
  ftp.getbinaryfile('INDEX.whole.gz')  
 puts "Saved #{File.size 'INDEX.whole.gz'} bytes."
end | -rw-r--r-- 1 (?) users 16979001 Jan 1 11:31 00-find.Linux.gz -rw-rw-r-- 1 (?) admin 73 Mar 9 2001 How-do-I-get-Linux Saving a text file to disk while processing it. ! ! Browse to http://metalab.unc.edu/linux/HOWTO/Installation-HOWTO.html ! Saved 73 bytes. Saving a binary file to disk. Saved 213507 bytes. | -rw-r--r-- 1 (?) users 475798 Apr 12 10:01 00-find.Linux.gz -rw-rw-r-- 1 (?) admin 73 Mar 9 2001 How-do-I-get-Linux Saving a text file to disk while processing it. ! ! Browse to http://metalab.unc.edu/linux/HOWTO/Installation-HOWTO.html ! Saved 73 bytes. Saving a binary file to disk. Saved 213906 bytes. | 
| ftp.login('leonardr', 'mypass')
class Net::FTP
  def processtextfile(remotefile)
    retrlines('RETR ' + remotefile) { |line| yield line }
  end
  def processbinaryfile(remotefile, blocksize=DEFAULT_BLOCKSIZE)
    retrbinary('RETR ' + remotefile, blocksize) { |data| yield data }
  end
end
require 'net/ftp'
Net::FTP.open('myisp.example.com') do |ftp|
  ftp.login('leonardr', 'mypass')
  ftp.chdir('public_html')
  ftp.puttextfile('index.html')
end | ... | NoMethodError: undefined method `login' for nil:NilClass from (irb):15 SocketError: getaddrinfo: Name or service not known from /usr/lib/ruby/1.8/net/ftp.rb:159:in `initialize' from /usr/lib/ruby/1.8/net/ftp.rb:159:in `open_socket' from /usr/lib/ruby/1.8/net/ftp.rb:175:in `connect' from /usr/lib/ruby/1.8/monitor.rb:229:in `synchronize' from /usr/lib/ruby/1.8/net/ftp.rb:174:in `connect' from /usr/lib/ruby/1.8/net/ftp.rb:136:in `initialize' from /usr/lib/ruby/1.8/net/ftp.rb:113:in `open' from (irb):25 |