在Rails应用程序中聚合提要

时间:2009-06-25 06:58:15

标签: ruby-on-rails rss aggregation feeds atom-feed

我正在考虑编写一个守护进程来循环遍历feed,然后将它们作为ActiveRecord对象添加到数据库中。

首先,我面临的一个问题是我无法使用feed-normalizer gem可靠地检索故事的作者/用户。有时,它似乎无法识别标签(我不知道是否有其他人遇到过此问题)。

其次,我没有看到有人将RSS提要转换回数据库条目。我需要这样做,因为每个条目都与其他ActiveRecord对象有关联。我没有找到任何宝石专门做这个,但我可以以某种方式破解像acts_as_feed这样的东西吗?

3 个答案:

答案 0 :(得分:0)

SimpleRSS公开了一个非常简单的API,并且在大多数Feed上运行良好。我建议不要查看实现,因为它的“解析器”是一堆正则表达式(在如此多的级别上是如此错误),但它运行良好。

守护进程是在后台运行它的好宝石。

如果您使用的是活动记录,则应遵循在rails之外使用AR的说明,然后内联定义模型类。这样可以减少膨胀。

RSS提要非常不一致,这是我们使用

的结果
  date = i[:pubDate] || i[:published] || i[:updated]
  body = i[:description] || i[:content] || i[:summary] || ""
  url = i[:guid] || i[:link]

另外,根据经验,确保你试图拯救一切(并记住正常救援没有抓住超时)。很难不得不反弹导致数据不良的RSS守护进程。

答案 1 :(得分:0)

不要使用SimpleRSS。它不会为您解码HTML实体,它偶尔会忽略Feed的结构。

我发现最简单的方法是使用XMLSimple将Feed解析为XML,但您可以使用任何XML解析器。

答案 2 :(得分:0)

最好的方法是使用连接到Feed API like Superfeedr's Rails引擎。 轮询RSS提要意味着您需要运行自己的异步工作程序和/或队列系统,这对于构建和维护加班可能相当复杂。您还必须处理数百种格式和不一致。这是一篇显示how to consume RSS feeds in a Rails application的博客文章。