Feedzirra有多个饲料

时间:2010-11-03 23:49:43

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-plugins

我一直在使用Feedzirra一段时间来抓取单个Feed并解析它们没有任何问题但是我试图通过它运行两个单独的feedburner feed我知道它们自己工作但是运行它们两个是产生错误。

NoMethodError in Feed entryController#index
undefined method `title' for #<Array:0x1042f9590>

我的模型看起来像这样:

def self.get_feeds
    feed_urls = ["feed_1", "feed_2"]
    update_from_feeds(feed_urls)
  end

  def self.update_from_feeds(feed_urls)
    feeds = Feedzirra::Feed.fetch_and_parse(feed_urls)
    add_entries(feeds.entries)
  end

  def self.update_from_feeds_continuously(feed_urls, delay_interval = 30.seconds)
    feeds = Feedzirra::Feed.fetch_and_parse(feed_urls)
    add_entries(feed.entries)
    loop do
      sleep delay_interval
      feeds = Feedzirra::Feed.update(feeds.entries)
      add_entries(feeds.new_entries) if feeds.updated?
    end
  end

  private

  def self.add_entries(entries)
    entries.each do |entry|
      unless exists? :guid => entry.id
        create!(
          :title        => entry.title
        )
      end
    end
  end

这可能是我做错了但我找不到任何完整的代码示例或教程来解析多个feed,只是github页面上的两行代码。

提前致谢!

1 个答案:

答案 0 :(得分:1)

feedsupdate_from_feeds返回fetch_and_parse时,传入多个Feed时,它就是一个数组。因此,each位于add_entries方法是拆分为单个订阅源,而不是订阅源条目。要解决此问题,您可以按如下方式重新定义update_from_feeds

def self.update_from_feeds(feed_urls)
  feeds = Feedzirra::Feed.fetch_and_parse(feed_urls)
  feeds.each do |feed_url, feed|
    add_entries(feed.entries)
  end
end

这假设您将始终将多个Feed网址传递给update_from_feeds(或数组中的单个网址)