繁体   English   中英

Rails open-uri解决所有错误并从数组中删除

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM