在Rails站点上显示Twitter订阅源(带历史记录)的最佳方式

时间:2009-11-03 04:16:14

标签: ruby-on-rails ruby twitter

在Rails网站上,我想显示某个Twitter提要,并加入分页,以便访问者可以看到之前的推文(尽可能早地回复)。

我使用Twitter gem实现了它,使用了搜索方法,它有一个很好的分页方法,但是限制了Twitter只返回过去两周的法规。因此,在返回几页之后,它将无法再获取。

我可以使用user_timeline方法,使用max_id,然后自己进行分页(将最后一项查看的max_id传回控制器以获取下一批)。

或者,我可以有一个rake任务,经常轮询Twitter提要(使用cron),并将推文存储在数据库中。该网站将为数据库提供服务,而不是查询Twitter。

哪种方法最好或推荐?我不喜欢将推文存储在数据库中,但这也会解决查询Twitter的延迟问题(尽管我可以使用片段缓存来克服这一点,除非我无法使用它阿贾克斯)。

感谢您的建议。

3 个答案:

答案 0 :(得分:3)

我采取相反的观点,出于各种原因,将推文存储在数据库中不是一个好主意。

  1. 你永远无法确定你是否收到了所有最近添加的推文,因为可以快速连续添加一堆。当然,你可以让cron工作更频繁地运行,但接下来我们就会遇到下一个问题。

  2. 如果推文被删除,无论出于何种原因,您的应用仍然会缓存它们,这也是我的做法,因为它们原因会被移除。

  3. 说实话,我不会让你的应用程序提供推文,但是在页面加载时会有一个“小部件”(jquery等),它们会喜欢它们,并且看看在那里实现某种形式的分页代替。

答案 1 :(得分:1)

我会将推文存储在数据库中 因此,即使Twitter处于脱机状态,您也不会遇到长时间的负载问题。您只需依赖您的数据库,即可正确显示推文 只有你的后台工作会失败,因为twitter不可用。但这不是一个真正的问题。

答案 2 :(得分:1)

我们将推文下载并存储在本地数据库中。我最近写了一篇关于我们如何实现这个目标的博客文章:

http://www.arctickiwi.com/blog/16-download-you-twitter-feed-using-ruby-on-rails-with-oauth

然后您可以使用will_paginate处理您的分页并尽可能地返回。