试图让我的脑袋周围Feedzirra here。红宝石 - 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
嗯,我不是任何覆盖,并且应该去正确的方式?
WRONG,这意味着我注定要一直试图获得更新到相同的静态饲料对象,但我得到一个变量的更新,我从来没有真正更新我的“静态饲料对象”,新添加的项目将被添加到我的“feed.new_entries”,因为它们理论上是新的。
我敢肯定,我在这里错过了一步,但是如果有人能让我看清楚,我会非常感激。我已经经历了几个小时的这段代码,并且无法掌握它。
显然,这应该正常工作,如果我不喜欢的东西:
if feed.updated?
puts feed.new_entries.count
@rssObject = initialize(@feed_url)
else
,因为这将重新初始化我的实例变量以崭新的饲料对象,并相应更新会再来。
但是这也意味着在那个时刻添加的任何新更新都将丢失,以及大规模的过度冲击,因为我不得不再次加载该东西。
在此先感谢!
多久你重试你的饲料?如果你第一次得到它,那么稍后再看,如果在那个时候饲料没有更新,你可能看不到变化,让我觉得你看到了正确的行为。 还有一些需要考虑的问题是将信息保存在内存中并重用变量的潜在问题。如果您的代码死亡,您将失去该状态,并且必须重新加载您完整跟踪的所有Feed。如果您要跟踪1000个Feed,这可能会非常昂贵。对于单个Feed而言,这不是什么大问题,但对于大量数据,您需要一个用于跟踪状态的数据库。 – 2010-03-21 00:14:54