Rails每6小时轮询一次RSS

时间:2012-02-18 01:22:14

标签: ruby-on-rails ruby rss polling

我正在寻求有关如何以给定间隔(例如6小时)轮询RSS的建议。

以下代码有效,它会读取并解析Feed并将其添加到数据库中。它只会添加新的Feed。这是类方法:

def self.update_from_feed(feed_url)
  feed = Feedzirra::Feed.fetch_and_parse("http://feeds.feedburner.com/PaulDixExplainsNothing") #Example feed
  feed.entries.each do |entry|
    unless exists? :guid => entry.id
      create!(
        :name         => entry.title,
        :url          => entry.url,
        :published_at => entry.published,
        :guid         => entry.id
      )
    end
  end
end

如何运行这整个类方法,比方说,每6小时一次?我是Ruby(和Rails)的新手,所以任何帮助都会受到一个例子的赞赏。我希望尽可能避免运行外部cron作业。如果有意义,我希望它在代码中每6小时运行一次。感谢

1 个答案:

答案 0 :(得分:4)

不,不使用cron是没有意义的。这就是cron的用途,它是以程序的名义。

如果你不喜欢cron语法,那很酷,那就是一个叫做的宝石,https://github.com/javan/whenever给出了一个很好的Ruby语法来生成一个cron作业和一个让你这样做的命令。

然而,对于上帝的爱,不要试图发明一种新的方式,除非你添加一些杀手级功能。使用cron,继续前进。