Rails 3 で開発し、Nokogiri を使用しています。私のコントローラーは複数のサイトを解析し、ビューに結果を表示します。問題は、これらのサイトのいずれかが利用できない場合 (403 または 503 エラーなど)、そのサイトが原因ですべての webapp がクラッシュすることです。
私の質問: Nokogiri がページを開く前に、解析されたページの可用性を確認する方法はありますか?
ありがとう
私のコントローラーの一部:
Docvariable1 = Nokogiri::HTML(open("http://www.site1.com/"))
@variable1 = {}
docvariable1.xpath('//div[6]/h3/a').each do |link|
@variable1[link.text.strip] = link['href']
End
Docvariable2 = Nokogiri::HTML(open("http://www.site2.com/"))
@variable2 = {}
docvariable2.xpath('//div[6]/h3/a').each do |link|
@variable2[link.text.strip] = link['href']
End
Docvariable3 = Nokogiri::HTML(open("http://www.site3.com/"))
@variable3 = {}
docvariable3.xpath('//div[6]/h3/a').each do |link|
@variable3[link.text.strip] = link['href']
end
私の見解の一部
<% if @variable1 %>
<% @variable1.each do |key, value| %>
<li ><a href=" <%= "#{value}" %>" target='_blank' ><%= "#{key}" %></a>
<% end %>
<% end %>
<% if @variable2 %>
<% @variable1.each do |key, value| %>
<li ><a href=" <%= "#{value}" %>" target='_blank' ><%= "#{key}" %></a>
<% end %>
<% end %>
<% if @variable3 %>
<% @variable1.each do |key, value| %>
<li ><a href=" <%= "#{value}" %>" target='_blank' ><%= "#{key}" %></a>
<% end %>
<% end %>
PS: 「DRY」原則の反対であり、まだ学習中であるため、コードが完全に「完璧」ではないことはわかっています ;)