2010-01-31 71 views
1

片段緩存如果我緩存,像這樣的RSS迴應:取消對異常

<% cache do %> 
    <%= fetch_rss(http://example.org) %> 
<% end %> 

我怎麼能阻止它的緩存,如果RSS不正確返回?即,如果fetch_rss返回異常或返回'未找到'

回答

0

棘手。

夫婦的想法。

您可以將fetch_rss調用到控制器中。緩存實際上只是一個可用於您的應用的散列。所以這需要一些額外的工作,但可能是最直接的方法。顯式檢查緩存,如果緩存失效,或者從緩存中拉出rss值並傳入視圖以正常渲染,請致電fetch_rss

或者,您可能能夠獲取您的提取引發錯誤,然後包裝在異常處理程序中。如果有例外情況,您可以撥打電話expire_fragment

+0

我正在考慮相同的選項。 – Christopher 2010-01-31 19:36:04

0

移動fetch_rss方法到控制器中屬於它的地方,然後處理未知的異常:

def index 
    begin 
    @rss = fetch_rss 

    # Caching can be done here ... 
    rescue InvalidRssError, NotFoundError => e 
    # ... 
    end 
end 

正如你所看到的,假設沒有例外獲取的RSS的時候,你就不必過期或否則改變緩存,除非你有成功的拉。