スクリプトに次のコードがあります。
begin
#Loop to create 1000 emails...
#Loop to send 1000 emails...
rescue Timeout::Error => e
retry_attempts += 1
if retry_attempts < 10
retry
else
puts "Timeout error, deleting emails...".red
logs.puts("Rescued a timeout error...#{e}")
email_ids_all.each do |email_delete|
#delete all email...
end
私の質問は何ですか retry
実際には「再試行」します。 スクリプトがすでに1つのループで1000のEメールを生成し、別のループで999のEメールを送信した後、1000番目のEメールを送信するとタイムアウトします。エラーが発生した特定のコード行を再試行します。 1000回目のEメールで、ループ全体をやり直すのでしょうか。それとも、両方のループを実行するスクリプトの先頭から始めるのでしょうか。
私はruby 1.9.3を使っています。
回答:
回答№1の場合は10retry
実行します 全体 begin
ブロックするので、あなたの場合は すべて 電子メールのループが再び実行されます。
これは簡単な例で、1から7までの整数を連続して表示します(無限ループになるため、CTRL-Cで終了します)。
begin
(1..10).each do |x|
puts x
if x > 6
STDIN.gets # press enter to do another iteration
raise ArgumentException
end
end
rescue
retry # loop will restart from 1
end