Ruby RSS::Parser.to_自动失败?

Ruby RSS::Parser.to_自动失败?,ruby,parsing,rss,Ruby,Parsing,Rss,我正在使用Ruby 1.8.7的RSS::Parser,它是stdlib的一部分。我对Ruby不熟悉 我想解析RSS提要,对数据进行一些更改,然后将其输出(作为RSS) 说我可以使用“#to_s”,但它似乎对某些提要有效,但对其他提要无效 这项工作: #!/usr/bin/ruby -w require 'rss' require 'net/http' url = 'http://news.ycombinator.com/rss' feed = Net::HTTP.get_response(

我正在使用Ruby 1.8.7的RSS::Parser,它是stdlib的一部分。我对Ruby不熟悉

我想解析RSS提要,对数据进行一些更改,然后将其输出(作为RSS)

说我可以使用“#to_s”,但它似乎对某些提要有效,但对其他提要无效

这项工作:

#!/usr/bin/ruby -w

require 'rss'
require 'net/http'

url = 'http://news.ycombinator.com/rss'
feed = Net::HTTP.get_response(URI.parse(url)).body

rss = RSS::Parser.parse(feed, false, true)

# Here I would make some changes to the RSS, but right now I'm not.

p rss.to_s
返回预期的输出:XML文本

这失败了:

#!/usr/bin/ruby -w

require 'rss'
require 'net/http'

url = 'http://feeds.feedburner.com/devourfeed'
feed = Net::HTTP.get_response(URI.parse(url)).body

rss = RSS::Parser.parse(feed, false, true)

# Here I would make some changes to the RSS, but right now I'm not.

p rss.to_s
不返回任何内容(空引号)

但是,如果我将最后一行更改为:

p rss
我可以看到对象中填充了所有提要数据。失败的是to_的方法

  • 为什么?
  • 如何获得某种错误输出来调试这样的问题

  • 据我所知,问题不在
    to_s
    ,而在解析器本身。进入parser.rb代码显示没有返回任何内容,因此返回空字符串是有效的

    我建议你看看这样的东西


    另外,作为参考,请看一下Ruby的模块,它可以方便地检索web资产,如提要。openuri很简单,但适合大多数任务。HTTP是较低级别的,这需要您键入更多的代码来替换OpenURI的功能。

    我也遇到了同样的问题,所以我开始调试代码。我认为ruby rss需要的元素太多了。该频道需要有“标题、链接、描述”,如果缺少,则会失败

    上面示例中的第二个提要缺少描述,这将导致to_失败

    我相信这是一个bug,但我真的不理解代码,几乎不懂ruby,所以谁知道呢。在我看来,即使缺少一些元素,to_s也会尽最大努力,这是很自然的

    无论如何

    rss.channel.description=“某物” rss.to_

    将“工作”

    问题在于def是否有必需的元素

    或者在 self.class::MODELS