Ruby rescue und retry bestimmten code-block
Ich habe folgenden code in meinem script...
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
Meine Frage ist, was retry
ist eigentlich "wiederholen". Wenn das Skript bereits generierten 1000 E-Mails in einer Schleife und schickte 999 von Ihnen in einer anderen Schleife, und dann es mal mit dem senden der 1000ste E-Mail - Wird es wiederholen Sie den spezifischen code-Zeile aufgetreten ist der Fehler auf, wird es starten Sie die Schleife über die 1000ste E-Mail, wird es beginnen die gesamte Schleife über, oder wird es an den Anfang des script läuft durch die beiden Schlaufen?
Ich bin mit ruby 1.9.3.
InformationsquelleAutor Luigi | 2013-08-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
retry
führt die gesamtebegin
block, also in deinem Fall alle die E-Mail-loops wird erneut ausgeführt.Hier ist ein schnelles Beispiel, die print-Ganzzahlen von 1 bis 7 kontinuierlich (beenden mit STRG-C, da es unendliche Schleife):
Hier ist ein wirklich guter Beitrag über die Verwendung
retry
in einer Schleife, blog.mirthlab.com/2012/05/25/...InformationsquelleAutor