我有檢查損壞的鏈接方法:異常處理
def self.check_prod_links
require 'net/http'
results = []
Product.find_each(:conditions =>{:published => 1}) do |product|
url = product.url
id = product.id
uri = URI(url)
begin
response = Net::HTTP.get_response(uri)
rescue
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Get.new(uri.request_uri)
response = http.request(request)
rescue
response = Net::HTTP.get_response("http://" + uri)
rescue => e
p "Problem getting url: #{url} Error Message: #{e.message}"
end
p "Checking URL = #{url}. ID = #{id}. Response Code = #{response.code}"
unless response.code.to_i == 200
product.update_attribute(:published, 0)
results << product
end
end
return results
end
我的理解是,救援=>電子應登錄受先前救援陳述抓住所有的異常,並且該方法應繼續運行然而對於當某些URL的檢查某種原因,腳本與以下異常退出:
所以SSL_connect返回= 1個錯誤號= 0狀態=的SSLv2/v3的讀取服務器問候答: 未知協議
我如何設置此所以,如果一個異常被捕獲,它會被打印,任務將繼續運行?
另外,我怎麼能叫的結果數組中的郵件視圖渲染,有沒有更好的方式來做到這一點,這樣我可以補充一點,是未發佈到已經存在的所有郵件產品?
謝謝!
和我一起@beerlington它是一個爛攤子同意,你不應該這樣做的 – 2012-07-19 21:24:21