пытаясь окунуться в Feedzirra здесь.Ruby - Feedzirra и обновления
У меня есть все настройки и все, и вы можете даже получить результаты и обновления, но что-то странное происходит.
я придумал следующий код:
def initialize(feed_url)
@feed_url = feed_url
@rssObject = Feedzirra::Feed.fetch_and_parse(@feed_url)
end
def update_from_feed_continuously()
@rssObject = Feedzirra::Feed.update(@rssObject)
if @rssObject.updated?
puts @rssObject.new_entries.count
else
puts "nil"
end
end
Правильно, что я делаю выше, начиная с большой подачей, а затем только получать обновления. Я уверен, что я должен делать что-то глупое, так как хотя я могу получать обновления и хранить их в одной и той же переменной экземпляра, я впервые не смогу их получить.
Очевидно, это происходит из-за того, что я переписываю свою переменную экземпляра только с обновлениями и теряю весь объект фида.
Я тогда думал об изменении кода для этого:
def update_from_feed_continuously()
feed = Feedzirra::Feed.update(@rssObject)
if feed.updated?
puts feed.new_entries.count
else
puts "nil"
end
end
Ну, я не перезаписать что-нибудь, и это должно быть путь правильно?
НЕПРАВИЛЬНО, это означает, что я обречен всегда стараюсь, чтобы получить обновления на тот же статический объект подачи, так как хотя я получаю обновление на переменном, я никогда на самом деле обновление моего «статический объект подачи», и новые добавленные элементы будут добавлены к моим «feed.new_entries», поскольку они в теории являются новыми.
Я уверен, что я пропустил здесь шаг, но я был бы очень признателен, если бы кто-то мог пролить свет на него. Я проработал этот код часами и не могу справиться с этим.
Очевидно, что это должно работать нормально, если я сделал что-то вроде:
if feed.updated?
puts feed.new_entries.count
@rssObject = initialize(@feed_url)
else
Потому что это переинициализировать мою переменную экземпляра с совершенно новым объектом подачи, и обновления будут приходить снова.
Но это также означает, что любое новое обновление, добавленное в тот момент, будет потеряно, а также массивный overkill, так как мне придется снова загрузить вещь.
Заранее благодарен!
Как часто вы повторить попытку фид? Если вы получите его в первый раз, а затем посмотрите еще раз, вы не увидите никаких изменений, если фид не обновился в то время, заставив меня подумать, что вы видите правильное поведение. Что-то еще, чтобы рассмотреть потенциальную проблему хранения информации в памяти и повторного использования переменной. Если ваш код умирает, вы теряете состояние и вам придется перезагружать все каналы, которые вы отслеживаете целиком. Это может быть очень дорогостоящим, если вы отслеживаете 1000 каналов. Для одного канала это не большая часть сделки, но для большого числа вам нужна база данных для отслеживания состояний. –