2013-02-23 2 views
0

У меня проблема с анализом RSS-канала. Когда я делаю это:Ruby get RSS-канал не получит последний фид

feed = getFeed("http://example.com/rss) 

Если содержание корма изменяет его не обновлять.

Если я делаю это так:

feed = getFeed("http://example.com/rss?" + Random.rand(20).to_s) 

Она работает большую часть времени, но не всегда.

getFeed() реализуется следующим образом:

def getFeed(url) 
    rss_content = "" 
    open(url) do |f| 
     rss_content = f.read 
    end 
    return rss_content 
end 

Я использовал это в Синатры с Руби 1.9.3, если это сделать разницу. По моему мнению, где-то он кэшируется, но я понятия не имею, где.

Редактировать: Okey после 1/2 дня работы на сервере работает без проблем.

+0

Эта предыдущая дискуссия может помочь: http://stackoverflow.com/questions/6389255/rss-feed-how-to -recommend-an-update-interval – fmendez

+0

не уверен, потому что это означает, что open() проверяет это, и я так не думаю –

ответ

2

Это:

feed = getFeed("http://example.com/rss?" + Random.rand(20).to_s) 

означает, что проблема с кэшированием, но Руби, OpenURI и Синатра не должно быть кэширование ничего. Возможно, ваш код работает за кэширующим устройством или приложением, которое обрабатывает исходящие запросы, а также входящие?

Это не исправить, но ваш код может быть значительно упрощен:

def getFeed(url) 
    open(url).read 
end 
Смежные вопросы