en essayant d'obtenir ma tête Feedzirra ici.Ruby - Feedzirra et mises à jour
Je l'ai tout l'installation et tout, et peut même obtenir des résultats et des mises à jour, mais quelque chose d'étrange se passe.
je suis venu avec le code suivant:
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
droit, ce que je fais ci-dessus, commence avec le grand flux, et seulement obtenir des mises à jour. Je suis sûr que je dois faire quelque chose de stupide, car même si je suis capable d'obtenir les mises à jour, et les stocker sur la même variable d'instance, après la première fois, je ne suis jamais capable de les obtenir à nouveau.
Évidemment, cela se produit parce que j'écrase ma variable d'instance avec seulement des mises à jour, et perd l'objet de flux complet.
Je me suis alors pensé à changer mon code à ceci:
def update_from_feed_continuously()
feed = Feedzirra::Feed.update(@rssObject)
if feed.updated?
puts feed.new_entries.count
else
puts "nil"
end
end
Eh bien, je ne suis pas rien et que écraser devrait être le moyen d'aller à droite? Cela signifie que je suis condamné à toujours essayer d'obtenir des mises à jour du même objet de flux statique, car même si je reçois les mises à jour sur une variable, je ne mets jamais à jour mon "objet de flux statique", et les éléments nouvellement ajoutés seront ajoutés à mes "feed.new_entries" car ils sont en théorie nouveaux. Je suis sûr que je manque une étape ici, mais j'apprécierais vraiment que quelqu'un puisse me faire la lumière là-dessus. J'ai parcouru ce code pendant des heures et je n'arrive pas à le comprendre.
Il est évident que cela devrait fonctionner très bien, si je faisais quelque chose comme:
if feed.updated?
puts feed.new_entries.count
@rssObject = initialize(@feed_url)
else
Parce que cela ma variable réinitialise exemple avec un objet d'alimentation flambant neuf, et les mises à jour reviendraient.
Mais cela signifie également que toute nouvelle mise à jour ajoutée à ce moment précis serait perdue, ainsi que surpasser massivement, car je devrais charger la chose à nouveau.
Merci d'avance!
Comment sont souvent vous réessayant votre flux? Si vous l'obtenez la première fois, puis regardez à nouveau plus tard, vous pourriez ne voir aucun changement si le flux n'a pas été mis à jour pendant ce temps, ce qui me fait penser que vous voyez le bon comportement. Une autre chose à considérer est le problème potentiel de garder l'information en mémoire et de réutiliser la variable. Si votre code meurt, vous perdez l'état et devrez recharger tous les flux que vous suivez dans leur intégralité. Cela pourrait être très coûteux si vous suivez des milliers de flux. Pour un seul flux, ce n'est pas une affaire mais pour un grand nombre, vous avez besoin d'une base de données pour suivre les états. –