Ruby on rails 在Rails应用程序中聚合提要

Ruby on rails 在Rails应用程序中聚合提要,ruby-on-rails,rss,aggregation,feed,atom-feed,Ruby On Rails,Rss,Aggregation,Feed,Atom Feed,我正在考虑编写一个守护进程来循环提要,然后将它们作为ActiveRecord对象添加到数据库中 首先,我面临的一个问题是,我无法使用feed normalizer gem可靠地检索故事的作者/用户。有时,它似乎无法识别标签,我不知道是否还有其他人遇到过这个问题 其次,我还没有看到有人将RSS提要转换回数据库条目。我需要这样做,因为每个条目都与其他ActiveRecord对象关联。我找不到任何专门的gems来实现这一点,但我能不能用某种方式破解一些类似于acts\u as\u feed的东西来实现

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

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


其次,我还没有看到有人将RSS提要转换回数据库条目。我需要这样做,因为每个条目都与其他ActiveRecord对象关联。我找不到任何专门的gems来实现这一点,但我能不能用某种方式破解一些类似于acts\u as\u feed的东西来实现这一点?

Simplers公开了一个非常简单的API,并且在大多数feed上都能很好地工作。我建议不要看实现,因为它的解析器是一堆正则表达式,在很多级别上都是错误的,但它工作得很好

守护进程是在后台运行它的好工具

如果您使用的是active record,那么您应该遵循在rails之外使用AR的说明,然后内联定义模型类。这将减少一点膨胀

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

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

此外,根据经验,确保您尝试救援一切,并记住正常救援不会捕获超时。必须不断地跳出获取坏数据的RSS守护程序,这很糟糕。

不要使用Simplers。它不会为您解码HTML实体,并且偶尔会忽略提要的结构


我发现将提要解析为XML是最容易的,但是您可以使用任何XML解析器。

最好的方法是使用连接到数据库的Rails引擎。
轮询RSS提要意味着您将需要运行自己的异步工作程序和/或队列系统,而构建和维护这些系统可能相当复杂。您还必须处理数百种格式和不一致性。这里有一篇博文显示了这一点

为什么,将RSS和其他提要转换为数据库条目是很正常的。。编程访问是XML提要的全部要点!您需要创建适当的模型,并在解析提要时更新和保存它们!这就是你要问的吗?啊,是的,这就是我要问的。然而,我找不到一块宝石能做到这一点。我发现rfeedpaser在某些方面优于feed normalizer,但它仍然不能将条目保存到数据库中。但是通过查看代码,我不认为我会找到这样的宝石,因为有太多的信息可以放进提要中。