Prev: uninitialized constant error... trying to create a TCPsocket in amodule
Next: Graphical programming with Qt
From: Luka Stolyarov on 30 May 2010 18:27 Hi. I have a small script that I use to download archives from the web. The code looks like this: require 'rubygems' require 'mechanize' def downloader() agent = WWW::Mechanize.new # create agent object page = agent.get('http://www.myurl.com') #authenticate form = page.forms.first form.username = '####' form.password = '####' #submit form page = agent.submit form #grab all links that have zip in them mylinks = page.links_with(:href => /zip\//) #for each link download and rename mylinks.each do |archive| name = archive.href.split('zip/')[1].sub('/','').strip puts "Archive #{name} is saving..." myfile = agent.click(archive) output = File.open("/Users/luka/Desktop/#{name}.zip", 'w') {|file| file << myfile.body } puts "Done!" end end begin downloader rescue Timeout::Error puts 'Timeout was detected. Trying again...' downloader end However, I've been having problems with timeouts from time to time, so I ended up making this code into a function and upon timeout invoke this function once again, as you can see at the bottom of the code. However, I still get an error, which looks like this on timeout: Archive 914188 is saving... Timeout was detected. Trying again... /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/timeout.rb:60:in `rbuf_fill': execution expired (Timeout::Error) So it tries to rescue the timeout but obviously calling the same function again is a bad idea. I was wondering why is it, and what would be a proper solution. Thanks! Luka -- Posted via http://www.ruby-forum.com/.
From: Walle Wallen on 1 Jun 2010 10:50 begin downloader rescue Timeout::Error puts 'Timeout was detected. Trying again...' retry end -- Posted via http://www.ruby-forum.com/.
From: Luka Stolyarov on 1 Jun 2010 12:25
I'll try it out, thanks! Walle Wallen wrote: > begin > downloader > rescue Timeout::Error > puts 'Timeout was detected. Trying again...' > retry > end -- Posted via http://www.ruby-forum.com/. |