# How to retry ftp.new?

**URL:** <https://www.ruby-forum.com/t/how-to-retry-ftp-new/146008>\
**Category:** Rails\
**Created:** [August 16, 2008, 1:47am UTC](https://www.ruby-forum.com/t/how-to-retry-ftp-new/146008 "2008-08-16T01:47:23Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![sumei](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/71c47a/32.png) [@sumei](https://www.ruby-forum.com/u/sumei)\
**Post date:** [August 16, 2008, 1:47am UTC](https://www.ruby-forum.com/t/how-to-retry-ftp-new/146008/1 "2008-08-16T01:47:23Z")

</div>

## Intermitently, we caught the ‘No route to host’ exception thrown by FTP.new with these lines of codes. I wonder if rety would help continue the work.

ftp = Net::FTP.new(server)  
ftp.login(@user, @passwd)  
ftp.getbinaryfile(remoteFile, localFile, 1024)  
ftp.close

## /usr/lib/ruby/1.8/net/ftp.rb:159:in `open' /usr/lib/ruby/1.8/net/ftp.rb:159:in`open\_socket’ /usr/lib/ruby/1.8/net/ftp.rb:175:in `connect' /usr/lib/ruby/1.8/monitor.rb:238:in`synchronize’ /usr/lib/ruby/1.8/net/ftp.rb:174:in `connect' /usr/lib/ruby/1.8/net/ftp.rb:136:in`initialize’ /home/testd/installer.rb:330:in `new’

So I come up with a ftpnew wrapper to help rety. But it doesn’t seem to  
work.  
Would someone be kindly help with a solution? Thanks very much. --sm

def ftpnew(server, retryCount=5, delayInSecs=10)  
count = 0

```
    log("FTP.new(#{server})")
    loop do
       begin
          ftp = Net::FTP.new(server)
       rescue => exception
          count = count + 1
          if (count < retryCount)
             sleep delayInSecs
             retry
          else
             break
          end
       end
    end
    if (count >= retryCount)
       raise "ftpnewFailed: ftp: #{ftp}, #{exception}"
    else
       log "ftp newed ok "
    end
end
```
