0

私のコード:

  feeds = Website.find(:all).map{|w| w.feed_url}

  feeds.each do |u|
    begin 
      open(u)
    rescue
      feeds.delete(u)
    end
  end

フィードの例:['http://da.wordpress.org/feed/', 'asdasd']

エラーを解決し、エラーが発生した場合はフィード配列からフィード URL を削除したいと考えています。この場合、asdasd を削除する必要があります。

ターミナル:

irb(main):133:0> feeds =  ['http://da.wordpress.org/feed/', 'asdasd']
=> ["http://da.wordpress.org/feed/", "asdasd"]
irb(main):134:0>  feeds.each do |u|
irb(main):135:1*     begin
irb(main):136:2*       open(u)
irb(main):137:2>     rescue
irb(main):138:2>       feeds.delete(u)
irb(main):139:2>     end
irb(main):140:1>   end
=> ["asdasd"]

asdasdを削除するのではなく、配列の最初の要素を削除するだけです...

4

1 に答える 1

1

私は以下のようにコードを書きました、そしてそれはうまくいきます:

require 'open-uri'
feeds =  ['http://da.wordpress.org/feed/', 'asdasd']  
feeds.dup.each do|u| 
  begin 
    open(u) 
  rescue Errno::ENOENT
    feeds.delete(u) 
  end
end
p feeds 
# >> ["http://da.wordpress.org/feed/"]

あなたのバージョンは機能していますが、それは良い習慣ではありません。

require 'open-uri'
feeds =  ['http://da.wordpress.org/feed/', 'asdasd']  
feeds.each do|u| 
  begin 
    open(u) 
  rescue 
    feeds.delete(u) 
  end
end
p feeds 
# >> ["http://da.wordpress.org/feed/"]
于 2013-07-07T21:47:42.897 に答える