2011-06-14 34 views
7

doldu.Yakut Yürütme Böyle bir yakut koduna sahip

Bunu nasıl yapabilirim?

+0

Öncelikle bu kolay arıza giderme –

+0

sağlayabilecek gibi (bu doc = Nokogiri :: HTML .read.strip 'doc = open (URL) ?: demek Nokogiri içine geçişini separetly url açmaya doc) ' – Sayuj

+0

Hayır demek istediğim' data = open (url) .read.strip' sonra bir sonraki satırda 'doc = Nokogiri :: HTML (data)' –

cevap

24

Biraz yorum yazacağım. Sen begin dönmek için retry kullanabilirsiniz: çalıştığını da bunu manuel olarak öldürmek kadar

begin 
    doc = Nokogiri::HTML(open(url).read.strip) 
rescue Exception => ex 
    log.error "Error: #{ex}" 
    retry 
end 

denemeye devam (ve günlük hataları) edeceğimizi. Muhtemelen istediğin bu değil, çünkü küçük bir hata seni sonsuz bir döngüye gönderecek. Böyle

MAX_ATTEMPTS = 10 

doc = nil 
begin 
    doc = Nokogiri::HTML(open(url).read.strip) 
rescue Exception => ex 
    log.error "Error: #{ex}" 
    attempts = attempts + 1 
    retry if(attempts < MAX_ATTEMPTS) 
end 

if(doc.nil?) 
    # Do something about the persistent error 
    # so that you don't try to access a nil 
    # doc later on. 
end 

şey birkaç kez deneyin ve sonra vazgeçeceğini: o etrafında kolay bir yolu da, diyelim ki, 10 kez deneyin ve sonra vazgeçmek izin vermektir. Bir sonraki denemeden önce biraz beklemek ya da hemen pes etmemeyi, bekleyip tekrar denemeyi veya hemen yeniden denemeyi seçmek için istisna (muhtemelen birden çok rescue blok ile) incelemek isterseniz, numaralı çağrıyı retry numaralı telefondan arayabilirsin. Her şeyden