加载Feed /条目获取0:fixnum错误的未定义方法'条目'

Kle*_* S. 2 parsing feeds feedzirra ruby-on-rails-3

我试图从我的博客加载提要但这导致提到的标题中的错误.

错误消息:

NoMethodError (undefined method `entries' for 0:Fixnum):
app/controllers/pages_controller.rb:6:in `home'
Run Code Online (Sandbox Code Playgroud)

这就是我在做的事情:

我在名为的文件lib夹中创建了一个文件blog_feeds.rb,其中仅包含以下内容:

module BlogFeeds
require 'feedzirra'

def load_feeds
  feeds = Feedzirra::Feed.fetch_and_parse('http://blog.shigotodoko.com/feed')
end

end
Run Code Online (Sandbox Code Playgroud)

错误的第6行是:

@feeds = load_feeds.entries
Run Code Online (Sandbox Code Playgroud)

请注意,此错误有时仅发生,而不是总是发生.

那么,关于这里出了什么问题的任何想法?

谢谢!

san*_*nds 6

在提取Feed时,如果HTTP提取导致错误(即不是200或3XX),Feedzirra将返回HTTP状态代码而不是包含提要条目的对象.

为了优雅地处理这个条件,通过将它包装在以下内容中来检查从fetch_and_parse返回的对象的类型:

unless feeds.is_a?(Fixnum)
  # work with the feeds object
else
  # handle the error condition, retry, etc.
end
Run Code Online (Sandbox Code Playgroud)

您还应该能够通过反复在浏览器中提取Feed来查看这些故障,如果它足够频繁的话.