[英]Rails open-uri resque all errors and remove from array
我的代码:
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']
我想挽救任何错误,如果有任何错误,请从feed数组中删除feed 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 ...
我写了下面的代码,它工作正常:
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/"]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.