2013-07-07 17 views
0
刪除

我的代碼:Rails的開放-URI resque所有的錯誤和從陣列

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']

我想拯救任何錯誤,並從進料數組,如果除去飼料網址任何錯誤..在這種情況下,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的第一個元素...

+0

沒有得到您的意見。你的代碼有問題嗎? –

+0

它沒有按預期工作我期望它刪除asdasd,因爲它會給出一個ERRNONET錯誤,而不是它只是刪除飼料數組中的第一個元素。 –

+0

我剛剛試過你的代碼,並且正在獲取'[「http://da.wordpress.org/feed/」]''。你確定你沒有任何錯別字或間距錯誤嗎?從你的代碼的外觀來看,你可能會在終端的'begin'聲明中遇到一些問題。 – zeantsoi

回答

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/"] 
相關問題